我正在使用 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
声明包含?任何指针将不胜感激。
最佳答案
嗯,你需要考虑一下:一个 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 日的事件。
关于缺少结束日期的两个日期之间的 SQL (SSRS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144844/