【发布时间】:2019-05-01 11:38:58
【问题描述】:
我有一个 SSRS 报告的 SQL 查询以返回在 2 个日期之间创建记录的结果,我使用的参数与日期值一样
select * from results
where [startdate] >=@datestart or [startdate] <=@dateend
当我运行 SSRS 报告并为 @startdate 和 @enddate 选择相同的日期时,我得到了 2 条我知道不正确的记录返回。当我运行 SQL 查询并使用日期,例如“2019 年 2 月 1 日”而不是参数时,我得到不同的结果。如果我使用的是实际日期,是否需要从参数中排除时间或将@startdate 的时间设置为 00:00:00 并将@dateend 设置为 23:59:59 以获得相同的结果?
【问题讨论】:
-
我添加了 SQL server 标签,因为提到了 SSRS(SQL Server Reporting Services)
-
顺便说一句,你脚本中的
or应该是and... -
是的,您需要从传递的参数值中排除时间部分,或者在 T-SQL 语句中执行此操作。另外,我认为您可能在这里想要
AND而不是OR。当基础列包含时间时,最好指定包含开始日期和排除结束日期,例如WHERE [startdate] >=@datestart AND [startdate] < DATEADD(day, 1, @dateend)。
标签: sql sql-server date reporting-services parameters