4

我正在使用 SSRS 2008r2 生成报告。在 SQL 查询中使用以下 WHERE 语句

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate <= @Created_Parameter2)

我正在使用数据类型为DateTime. 然后用户从日历中选择日期。我想获得在日期 1 ( @Created_Parameter) 和日期 2 ( @Created_Parameter2) 之间创建工作的结果。

但返回的结果不包括第二个日期 ( @Created_Parameter2)。如果我选择01/07/2013 - 05/07/2013我得到 01、02、03、04 但没有 05。如果我选​​择 01/07/2013 - 06/07/2013 我得到 01、02、03、04、05。

我试过使用:

WHERE (NonPMJobs.npmJobCreateDate BETWEEN @Created_Parameter AND @Created_Parameter2)

但得到相同的结果。

我在这里遗漏了什么,为什么WHERE声明不包含在内?任何指针将不胜感激。

4

1 回答 1

7

好吧,您需要考虑一下:DATETIME这样的:05/07/2013表示 7 月 5 日(或 5 月 7 日 - 取决于您的语言环境)在一天开始的午夜(可以说是 00:00 小时)。

所以这不包括当天发生的事件!

最好的解决方案是使用

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate < DATEADD(DAY, 1, @Created_Parameter2))

并且基本上得到比第二天更小的基于@Created_Parameter2. 因此,对于您的 7 月 5 日,这将是7 月 6 日之前的任何事情——包括7 月 5 日之后的所有事件。

于 2013-08-09T10:43:33.740 回答