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

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语句不包容?任何提示都将不胜感激。

1个回答

7

你需要考虑这一点:像这样的DATETIME05/07/2013表示7月5日(或者5月7日——取决于你的语言环境)在一天开始时的午夜(可以说是0:00小时)。

因此,这并不包括当天发生的事件!

最好的解决方案是使用:

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

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


太厉害了。谢谢你。我甚至没有考虑到00:00。已经更改语句并且它可以工作了。感谢你的帮助。 - user1022772

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接