2

我正在使用 SQL Server 2008,我正在尝试计算一年前的两个日期。假设今天是 3/18/13,我需要找到 4/1/12 和 4/30/12。

我尝试了以下方法,它给了我 2012 年 4 月 18 日,但不确定如何获得上述所需的日期。另外,我需要找到 12 年 5 月 1 日、12 年 5 月 31 日……等等。知道吗?谢谢。

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 
4

1 回答 1

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))))

如果有更有效的方法来做到这一点,我不会感到惊讶。有关如何计算不同 SQL Server 日期的示例中的文章讨论了这些类型的计算。

于 2013-03-18T22:20:59.733 回答