sql日期差异问题

时间:2012-11-08 15:29:04

标签: sql sql-server-2008 telerik telerik-grid

我正在处理telerik gridview,我应该在某些情况下显示警告,其中一个就是:

如果截止日期大于今天的日期且警告天数为3,那么它将显示截止日期大于今天的所有记录,但仅当它们出现在警告期间时才会显示。< / p>

所以,如果今天的日期是22-12-2012,截止日期是25-12-2012,警告日期是3,那么它应该选择该记录

到目前为止我尝试了什么:

 DateTime dtTodayDate = DateTime.Today;
   string strTodayDate = dtTodayDate.ToString("yyyy/MM/dd 00:00:00");
    strFilter += @"OR ( [DueDate] >= #" + strTodayDate + @"# AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] =#" + strTodayDate + @"# )";

无法对System.DateTime和System.Int32执行' - '操作。

1 个答案:

答案 0 :(得分:2)

您使用了错误的分隔符,Access使用了#。对于SQL Server,只需将日期作为常规字符串传递:

strFilter += @"OR ( [DueDate] >= '" + strTodayDate + @"' AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] ='" + strTodayDate + @"' )";

但是,你应该使用参数化查询 - 你很可能会在某个时候传递一个含糊不清的字符串而不会得到你认为你得到的日期值。