SSRS日期表达停止工作

时间:2016-03-31 19:49:18

标签: sql-server reporting-services expression

我希望有人可以与我分享经验。我已经使用以下ssrs表达式将SSRS报告参数默认为当月的最后一天几个月没有问题:

=DateAdd(“d”, -1, DateSerial(Year(Now()), Month(Now()), 1))

今天早上,而不是返回2016年3月31日,表达式将停留在2016年3月29日。任何人都可以帮助我理解为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

您将在某一天减去当月的第一天。 你必须得到下个月的第一天并减去一天。

=DateAdd("d", -1, DateSerial(2016, Month(Now.AddMonths(1)), 1))

返回3/31/2016

如果有帮助,请告诉我。

答案 1 :(得分:0)

您显示的表达式将显示上个月的最后一天,而不是本月的最后一天。

您希望进行日期算术,而不是从头开始构建日期。想想如果你使用当前年份会发生什么,但是增加一个月来找到你需要的月份。

获得当月最后一天最安全的方法是计算本月的第一天,加1个月然后减去一天:

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

如果您真正想要的是上个月的最后一天,那么这很简单:

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