我正在使用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
声明?任何指针都将非常感激。
答案 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日以来的所有事件。