【问题标题】:Date parameter expression(s) - SSRS日期参数表达式 - SSRS
【发布时间】:2021-06-23 01:22:00
【问题描述】:

我正在努力研究如何让 SSRS 报告的日期参数默认为:

日期 1:上个月的最后一天 - 上一年。

例如今天 = 22/06/2021 - 我需要 31/05/2020 出现

第 2 天:当月的最后一天 - 上一年。

例如今天 = 22/06/2021 - 我需要 30/06/2020 才能出现。

感谢您提供的任何帮助。谢谢。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    我总是发现先将日期更改为当前月份的第一天并从那里开始更容易。我曾经使用 DATEADD,但现在开始使用 VB.NET 方式 - 这样的复杂计算实际上更容易。

    当月的第一天:

    =DATEADD("d", 1 - DAY(TODAY))
    

    =TODAY.AddDays(1 - TODAY.Day)
    

    然后减去一年:

    =DATEADD("y", -1, DATEADD("d", 1 - DAY(TODAY)))
    

    =TODAY.AddDays(1 - TODAY.Day).AddYears(-1)
    

    然后从中减去一天得到上个月的月底:

    =DATEADD("d", -1, DATEADD("y", -1, DATEADD("d", 1 - DAY(TODAY))))
    

    =TODAY.AddDays(1 - TODAY.Day).AddYears(-1).AddDays(-1)
    

    上年当月最后一天,减去天前应加一个月:

    =DATEADD("d", -1, DATEADD("M", 1, DATEADD("y", -1, DATEADD("d", 1 - DAY(TODAY)))))
    

    =TODAY.AddDays(1 - TODAY.Day).AddYears(-1).AddMonths(1).AddDays(-1)
    

    VB.NET 更容易阅读,可以在阅读时计算,而阅读嵌套的 DATEADD 则比较困难。

    【讨论】:

    • 感谢您花时间和麻烦回来
    • 好答案。我经常忘记使用 VB.NET 方法。您实际上可以稍微缩短最后一个表达式。 =TODAY.AddYears(-1).AddMonths(1).AddDays(TODAY.Day * -1)
    【解决方案2】:

    对于第一个表达式使用

    =
    DateAdd(
            DateInterval.Day,
            day(today()) * -1,
            DateAdd(DateInterval.Year, -1, today())
           )
    

    第二次使用

    =
    DateAdd(
            DateInterval.Day,
            Day(today()) * -1,
            DateAdd(
                    DateInterval.Month, 
                    1,
                    DateAdd(DateInterval.Year, -1, today())
                    )
            )
    

    在第一个表达式中,从中间开始向外工作。

    使用 DateAdd 从今天的日期中减去 1 年,然后从中减去当前日期数 (22)。

    第二个是.. 从今天的日期减去 1 年,然后加上一个月,最后减去当天的数字。

    【讨论】:

    • 非常感谢您不厌其烦地回答 - 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多