缺少结束日期的两个日期之间的SQL(SSRS)

时间:2013-08-09 10:39:26

标签: sql reporting-services ssrs-2008

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

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

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

但是返回的结果不包括第二个日期(@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声明?任何指针都将非常感激。

1 个答案:

答案 0 :(得分:6)

嗯,你需要考虑这个:DATETIME这样:05/07/2013表示7月5日(或5月7日 - 取决于你的语言环境)在午夜时分开始(00:00小时,可以这么说)。

所以 NOT 包含当天发生的事件!

最好的解决方案是使用

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

基本上根据@Created_Parameter2获取比下一个日更小的所有内容。因此,对于7月5日,这将是7月6日之前的任何事情 - 其中包括7月5日以来的所有事件。