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

标签 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 ) 之间创建工作的结果。

但返回的结果不包括第二个日期 ( @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/

相关文章:

sql - 表是否会在更改表删除列时被删除并重新创建?

reporting-services - SSRS 使用两个矩阵表示一个数据集

ssrs-2008 - 如何减小 SSRS PDF 导出大小

reporting-services - SSRS 2008R2 : Visual Studio 2008 and “2008” and “2010” schemas

reporting-services - 使用列和行分组在 Tablix 中进行交互式排序

sql - 在单个语句中更新多个值

sql - 选择查询返回列包含域名的所有行

mysql - 从组中选择最大元素列

c# - 是否有可能以及如何从 SQL Server 中的本地报告服务针对在线动态 CRM 数据源运行 SSRS 报告?

reporting-services - SSRS元素跳位