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

Datetime 如何使用SQL Reporting Services获取当月的最后一天,datetime,reporting-services,ssrs-2008,Datetime,Reporting Services,Ssrs 2008,在SQL Server Reporting Services中,如何计算当月的最后一天?以下是我得出的答案 =DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1) 通过将程序集添加为引用,可以使用该程序集执行此工作。来自Microsoft SQL团队成员的博客: -- returns the last day of the current month. select dbo.Date(year(getdate()

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

以下是我得出的答案

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

通过将程序集添加为引用,可以使用该程序集执行此工作。

来自Microsoft SQL团队成员的博客:

-- returns the last day of the current month.
select dbo.Date(year(getdate()), month(getdate())+1,0)

希望这有帮助!
--Dubs

我知道你已经找到了自己的答案,但我建议你选择:

=Today.AddDays(1-Today.Day).AddMonths(1).AddDays(-1)
在我看来,它更容易阅读,并且可能有更好的性能(尽管很可能不明显)

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

=Today.AddDays(1-Today.Day).AddMonths(1).AddSeconds(-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)))

我希望这对某人有帮助

您可以尝试此表达式,现在用日期字段替换即可

=日期序列(年(现在)、月(现在)、1)

希望这有帮助


关于

有一种更简单的方法,如有标记的答案:

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

由于DateSerial()接受整数作为参数,因此不必使用AddMonths()和AddDays()。如本例所示,可以在DateSerial()中进行即时计算


此外,第1天是一个月的第一天,而第一天减去一天是前一个月的最后一天(1-1=0)。因此,示例将返回当月最后一天的日期。

就像买枪一样,在您接受自己的答案之前,需要等待一段时间。我将在2天后将其标记为已接受。谢谢,但我正在寻找如何做到这一点,不是作为SQL查询,而是作为SSRS表达式,这是有史以来最好的绝对概述。谢谢@Technane