2010-05-17 84 views

回答

36

这里是我想出了

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

应将此标记为接受的答案,然后=)。 – ajdams 2010-05-17 21:21:14

+1

就像买枪一样,有一段等待期才能接受你自己的答案。我会在2天内将其标记为已接受。 – Cory 2010-05-17 22:38:19

0

,你就可以把它作为一个参考使用的组件做这项工作的答案。

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

谢谢,但我正在寻找如何做到这一点,而不是作为一个SQL查询,但作为一个SSRS表达式 – Cory 2010-05-18 21:40:04

8

我知道你已经找到自己的答案,但我建议这种替代:

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

这是一个小更易于阅读,在我看来,并有可能表现略好(尽管很可能无法察觉)

,当然,如果你想垫出该日23:59:59,因为往往是必要的,只要稍微修改:

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

由于我花了一段时间才弄明白这一点,而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))) 

我希望这可以帮助somone。

+0

是的,它的确如此,谢谢 – TheEmirOfGroofunkistan 2016-01-22 15:49:12

相关问题