SSRS 日期范围参数

问题描述 投票:0回答:2

我在 SSRS 2016 中有一份报告,其中包含一个 SP,其中有一个名为 startdate 的日期字段。我想创建一个参数,用户可以在两个范围之间进行选择:startdate >='2017' 或 startdate < '2017'. This seems like it should be simple, but I can't see to find an easy way to do this.

我尝试在 SSRS 中创建一个参数,其中选择“指定值”并手动添加这些值,但出现错误,指出“表达式引用了参数集合中不存在的参数“startdate”。

我确信我可以通过使用这些日期创建一个存储过程来创建它,但这似乎比需要的工作更多。

有谁知道更好的方法吗?

sql-server reporting-services
2个回答
0
投票

如果您希望有一个具有两个选项的参数,0 - 2017 年之前,1 - 2017 年之后,那么您应该创建一个具有两个选项的日期参数,在标签字段中的 1/1/2017 之前带有 0在值字段中,在标签字段中 1/1/17 之后,值字段中为 1。然后在您的报告中,您只需根据 1 或 0 值过滤数据即可。

例如:

DECLARE @DateFilter INT = 1

    IF ( @DateFilter = 0 )
        BEGIN
            SELECT * FROM dbo.MyTable t
            WHERE t.DateFilter < '1/1/17'
        END

    IF ( @DateFilter = 1 )
        BEGIN
            SELECT * FROM dbo.MyTable t
            WHERE t.DateFilter >='1/1/17' 
        END

我不知道你为什么要这样过滤你的数据。我建议使用 Larnu 的建议,即您有两个参数:开始日期和结束日期。否则,随着时间的推移,这可能会为第二个选项返回很多行。


0
投票

在SSRS中添加几个参数,例如FromDate和ToDate,并将其数据类型设置为Date/Time。 您可以使用 DateAdd 函数指定这些参数的默认值,示例如下:

今天:

=Today()

上周从今天开始:

=DateAdd(DateInterval.Day, -7,Today())

您可以按照类似的方式添加/减少年份、季月等,如下所示。只需将数字更改为所需长度即可

=DateAdd(DateInterval.Year,-1,Today())

=DateAdd(DateInterval.Quarter,-1,Today())

=DateAdd(DateInterval.Month,-1,Today())

=DateAdd(DateInterval.DayOfYear,-1,Today())

=DateAdd(DateInterval.WeekOfYear,-1,Today())

=DateAdd(DateInterval.WeekDay,-1,Today())

=DateAdd(DateInterval.Hour,-1,Today())

=DateAdd(DateInterval.Minute,-1,Today())

=DateAdd(DateInterval.Second,-1,Today())
© www.soinside.com 2019 - 2024. All rights reserved.