如何在SQL中获取上一年的前一个月的最后一天的日期?

时间:2014-06-18 14:39:14

标签: sql sql-server date

我正在编写一个带有where子句的查询,该子句需要返回上一年的上个月的最后一天。因此,如果我今天运行它(18/06/2014),它将返回31/05/2013。如果我在下个月19/07/2014运行它,它将返回30/06/2013,依此类推。

我可以用

select DATEADD(day,-1,DATEadd(MONTH,datediff(month,0,GETDATE()),0))

返回上个月的最后日期,但我无法解决如何调整这一点以便给我一年前的日期。

我可以添加 - 365到上面代码的末尾,它可以实现我想要的但不会占用闰年。虽然我不希望我的报告被使用的时间足够长,但这对于找到一个效果很好的解决方案(并认为它们可能是这样)会很好。

任何解决方案都非常感谢。

1 个答案:

答案 0 :(得分:5)

只需在dateadd(YY, -1, {your code})周围添加另一个getdate()即可将年度回滚,然后查看上个月(以下评论)。

select DATEADD(day,-1,DATEadd(MONTH,datediff(month,0,DATEADD(YY,-1,GETDATE())),0))