1

我正在研究 Telerik gridview,我应该在某些条件下显示警告,其中 1 个是:

如果到期日大于今天的日期并且警告天数为 3,那么它将显示所有到期日大于今天的记录,但只有当它们在警告期内出现时才会显示。

所以如果今天的日期是 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 执行“-”操作。

4

1 回答 1

2

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

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

但是,您应该改用参数化查询——很有可能您会在某个时候传递一个模棱两可的字符串,而不会得到您认为得到的日期值。

于 2012-11-08T15:34:33.347 回答