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

Dav*_*fox 1 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))
Run Code Online (Sandbox Code Playgroud)

返回上个月的最后日期,但我无法弄清楚如何调整这个以给我一年前的日期.

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

非常感谢任何解决方案

Dav*_*lum 5

只需dateadd(YY, -1, {your code})在你的周围添加另一个getdate(),然后再回顾一年,然后查看上个月(以下评论).

select DATEADD(day,-1,DATEadd(MONTH,datediff(month,0,DATEADD(YY,-1,GETDATE())),0))
Run Code Online (Sandbox Code Playgroud)