如何使用SQL Reporting Services获取当月的最后一天

问题描述 投票:15回答:6

在SQL Server Reporting Services中,如何计算当月的最后一天?

datetime reporting-services ssrs-2008
6个回答
39
投票

这是我想出的答案

=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)

21
投票

我花了一段时间来解决这个问题,而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)))

我希望这可以帮助别人。


9
投票

我知道你找到了自己的答案,但我建议你这样做:

=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)

在我看来,它更容易阅读,并且可能会有稍微好一点的表现(尽管很可能不会引起注意)

当然,如果您想将该日期填充到23:59:59(通常是必要的),只需稍微修改:

=Today.AddDays(1-Today.Day).AddMonths(1).AddSeconds(-1)

0
投票

来自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


0
投票

您可以尝试使用此表达式,只需立即替换日期字段即可。

= DateSerial(年(现在),月(现在),1)

希望这可以帮助。

问候


-1
投票

你可以通过添加它作为参考来使用程序集来完成这项工作。

© www.soinside.com 2019 - 2024. All rights reserved.