如何让 SSRS 日期正确默认?

How to get SSRS Date to default correctly?

多年来我一直在使用 SSRS,并且一直使用该函数使用以下方法为上个月的最后一天设置默认日期参数。 =dateadd("m",0,dateserial(year(Today),month(Today),0)) 但是,这次我需要在过去 9 个月内执行此操作,因此现在是 2021 年 3 月,我希望默认日期为 6/30/2020,因此我使用: =dateadd("m",-8,dateserial(year(Today),month(Today),0)) SSRS returns 正确的年份和月份,但我得到的日期是 6 月 28 日,我认为这是因为它首先查看 2 月,然后返回 8 个月?如果我将 0 或 8 更改为任何数字,我仍然会在日期字段中得到 28?

我通常从月中减去天数得到该月的第一天,减去月数加 1 然后减去一天得到上个月的最后一天。有点乏味,但它避免了各种月末问题。

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

或者您可以使用 VB.NET 方法做同样的事情:

=TODAY.AddDays(1 - TODAY.Day).AddMonths(-8).AddDays(-1)
=DateAdd("d", -1,
        ( 
            DateAdd("m",
                    -8, 
                    DateSerial(YEAR(Today()), Month(Today()),1)
                    )
        )
    )

从内部开始,DateSerial 得到本月的第一天,得到 2021-03-01 然后我们从中减去 8 个月得到 2020-07-01 最后减去 1从这天给我们上个月的最后一天,2020-06-30