【问题标题】:SSRS DateTime Parameter Force TimeSSRS DateTime 参数强制时间
【发布时间】:2013-08-15 20:06:27
【问题描述】:

我有一个 SSRS 报告,可让用户将开始时间和结束时间传递给查询。

开始时间完美运行,因为它会自动选择 00:00:00 作为时间。

但是结束时间也选择了相同的时间,我希望它自动选择 11:59:59。

这可能吗?

提前致谢

【问题讨论】:

  • 您是否希望它选择 11:59:59,因为您使用的是 WHERE DateField BETWEEN @StartTime AND @EndTime 之类的东西?你能不能把它改成WHERE DateField >= @StartTime AND DateField < DATEADD(DAY, 1, @EndTime),那么@EndTime的时间是00:00就没有关系了。
  • 你可能一针见血!谢谢
  • @GarethD,你应该发表你的评论作为答案。

标签: sql reporting-services ssrs-2008


【解决方案1】:

很少需要设置时间为23:59:59 的日期参数,通常在这种情况下是因为您正在使用类似的东西:

WHERE DateTimeField BETWEEN @DateTime1 AND @DateTime2;

最好避免哪个,Aaron Bertrand 在他的文章What do BETWEEN and the devil have in common? 中的回答比我在此处的回答中详细得多,但总而言之,当使用 DATETIME 时,它几乎总是优先的使用类似的东西

WHERE DateField >= @DateTime1
AND DateField < @DateTime2;

虽然这可能会给用户带来一些困惑,他们希望如果他们选择 2013 年 8 月 15 日的结束日期参数,它将包含该日期的数据,因此您可能需要使用:

WHERE DateField >= @DateTime1
AND DateField < DATEADD(DAY, 1, @DateTime2);

【讨论】:

  • 另一件要考虑的事情是,如果你确实使用了 @DateTime1 AND @DateTime2 之间的 DateTimeField;那么在 2311:59:59 和第二天 00:00:00 之间的任何 DateTimeField 值都将被忽略(例如,23:59:59.123)
猜你喜欢
  • 1970-01-01
  • 2013-12-03
  • 2015-11-29
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多