在SQL Server Reporting Services中,如何计算当月的最后一天?
这是我想出的答案
=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)
我花了一段时间来解决这个问题,而JC的答案是最简单的修改并具有良好的逻辑结构。我为其他人搜索关于这个主题的答案略微扩展了它。我发现通常你不只是想要一个月/一年的最后一天你也想要一个月/一年的第一天。所以在这里他们是完整的线来计算。还有SQl版本。
本月第一天
SSRS=Today.AddDays(1-Today.Day)
SQL=SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,getdate()),0))
本月最后一天
SSRS=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
SQL=SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
今年的第一天
SSRS=Today.AddMonths(1-Today.month).AddDays(1-Today.day)
SQL=SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
当年的最后一天
SSRS=Today.AddDays(1-Today.Day).AddMonths(13-today.month).AddDays(-1)
SQL=SELECT DATEADD(dd,-1,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)))
我希望这可以帮助别人。
我知道你找到了自己的答案,但我建议你这样做:
=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
在我看来,它更容易阅读,并且可能会有稍微好一点的表现(尽管很可能不会引起注意)
当然,如果您想将该日期填充到23:59:59(通常是必要的),只需稍微修改:
=Today.AddDays(1-Today.Day).AddMonths(1).AddSeconds(-1)
来自Microsoft SQL团队成员的博客:
-- returns the last day of the current month.
select dbo.Date(year(getdate()), month(getdate())+1,0)
http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx
希望这可以帮助! --Dubs
您可以尝试使用此表达式,只需立即替换日期字段即可。
= DateSerial(年(现在),月(现在),1)
希望这可以帮助。
问候
你可以通过添加它作为参考来使用程序集来完成这项工作。