在SSRS中使用日期选择器中的值

时间:2018-07-31 20:30:56

标签: sql sql-server sql-server-2008 reporting-services

我有一个SSRS报告,其中包含两个可为空的日期选择器参数-开始日期和结束日期。

在查询中,我想选择这些日期之间的值,或者如果其中一个(或两个)日期为null。

我尝试过:

WHERE ... AND (StartDateTime >= @FromDateTime OR his.StartDateTime is null) AND (EndDateTime <= @ToDateTime OR EndDateTime is null)

及其相关变化,但我无法使其正常工作。我正在考虑编写一个存储的proc来对临时表执行此操作,但想查看在where子句中是否有一种简单的方法来完成此操作。

1 个答案:

答案 0 :(得分:0)

这里有几种可能的情况。

您希望参数为可选

这通常称为厨房水槽查询。

WHERE <some conditions>
    AND (StartDateTime >= @FromDateTime OR @FromDateTimeis null) 
    AND (EndDateTime <= @ToDateTime OR @ToDateTime is null)

您需要阅读一些关于此的博客。

您的StartDateTime和EndDateTime为空

在这种情况下,您想将NULL参数与NULL日期进行比较

WHERE <some conditions>
    AND (StartDateTime >= @FromDateTime OR (@FromDateTime is null and StartDateTime is null)) 
    AND (EndDateTime <= @ToDateTime OR (@ToDateTime is null and EndDateTime is null))

您希望将最优参数逻辑应用于数据,而不是参数

这基本上就是您已经拥有的,这就是为什么我没想到它就是您想要的。

WHERE <some conditions>
    AND (StartDateTime >= @FromDateTime OR StartDateTime is null) 
    AND (EndDateTime <= @ToDateTime OR EndDateTime is null)