繁体   English   中英

如何将数据库中的“ EndDate”与今天的当前日期进行比较?

[英]How do i compare the “EndDate” in my database to the current date of today?

我想根据EndDate是否是<今天的日期来执行查询。这是我到目前为止的内容,我需要知道如何比较它们。谢谢!

 //Delete from DB Condition (EndDate) if (sqlCon.State == ConnectionState.Closed) sqlCon.Open(); SqlCommand sqlCmd = new SqlCommand("DeleteByDate", sqlCon); sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.ExecuteNonQuery(); sqlCon.Close(); Clear(); 

这是存储过程。

 ALTER PROC [dbo].[DeleteByDate] @AdvID int AS BEGIN UPDATE a SET a.Status = 0 FROM Advertisement a WHERE a.AdvID = @AdvID END 

您可以像这样从C#或SQL处理它:

C#

if(EndDate < DateTime.Now.Date)     // Assuming EndDate is already defined in your class 
{
    using(SqlConnection sqlCon = new SqlConnection(sqlCon.ConnectionString) )
    using(SqlCommand sqlCmd = new SqlCommand("DeleteByDate", sqlCon))
    {
        sqlCon.Open();
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.Add("@AdvID", SqlDbType.Int);
        sqlCmd.Parameters["@AdvID"].Value = AdvID //Assuming it's already defined;
        sqlCmd.ExecuteNonQuery();   
    }   
}

SQL:

ALTER PROC [dbo].[DeleteByDate]
@AdvID int
AS
BEGIN

    DECLARE @CurrentDate DATE = GETDATE() -- to get current date

    -- Assuming that Advertisement table has the column EndDate
    IF EXISTS (SELECT * FROM Advertisement a WHERE a.EndDate < @CurrentDate )
    BEGIN 
        UPDATE a SET a.Status = 0
        FROM Advertisement a
        WHERE a.AdvID = @AdvID  
    END 
END

如果使用C#,它将直到满足条件时才触发sp,但是在SQL中,它将使C#触发sp,并且sp会在每次代码运行时检查条件。

因此,这取决于您的应用程序结构,首先是应用程序还是数据库,这是您要走的路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM