我正在使用SQL Server 2008,我正在尝试计算一年前的两个日期。假设今天是2013年3月18日,我需要找到4/1/12并找到4/30/12。
我尝试了下面的内容,它给了我4/18/12,但不确定如何获得上面提到的所需日期。另外,我需要找到5/1 / 12,5 / 31/12 ......等等。有什么想法吗?感谢。
DATEADD(MONTH,-11, GETDATE()) - returns 4/18/12
我也试过
DATEADD(YEAR,-1, DATEADD(MONTH,DATEDIFF(MONTH,-11, GETDATE()), 0)) It returns 4/1/12 ,
DATEADD(YEAR,-1, DATEADD(MONTH,DATEDIFF(MONTH,-10, GETDATE()), 0)) also returns 4/1/12 instead of 5/1/12
答案 0 :(得分:3)
如果你想要的是一年前的下一个月的第一天和最后一天,那么这样的事情可能有用:
SELECT DATEADD(month,-11,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0) )
SELECT DATEADD(month,-11,DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))))
如果有更有效的方法,我不会感到惊讶。 examples of how to Calculate Different SQL Server Dates上的文章讨论了这些类型的计算。