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

use*_*772 3 sql reporting-services ssrs-2008

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

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate <= @Created_Parameter2)
Run Code Online (Sandbox Code Playgroud)

我正在使用数据类型为的参数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)
Run Code Online (Sandbox Code Playgroud)

但得到相同的结果.

我在这里错过了什么,为什么不WHERE包含声明?任何指针都将非常感激.

mar*_*c_s 6

好吧,你需要考虑这个:DATETIME这样的:05/07/2013意味着7月5日(或5月7日 - 取决于你的地区)当天午夜开始时(00:00小时,可以这么说).

所以这并包括在那一天发生的事件!

最好的解决方案是使用

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND     
      (NonPMJobs.npmJobCreateDate < DATEADD(DAY, 1, @Created_Parameter2))
Run Code Online (Sandbox Code Playgroud)

基本上得到一切的量比较小下一根据一天@Created_Parameter2.因此,对于7月5日,这将是7月6日之前的任何事情- 其中包括7月5日以来的所有活动.