在SQL Server中查找去年的日期

时间:2013-03-18 21:48:12

标签: sql sql-server date

我正在使用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 

1 个答案:

答案 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上的文章讨论了这些类型的计算。