我有這個查詢,給了我過去15年每一個給定的日期。當我的開始日期是2月29日時,它不會返回2012年,2008年和2004年的29年。我怎樣才能讓這個查詢返回那些年份的29歲?如何保持閏年,減少1年
DECLARE @TempDate1 TABLE (Entry_Date Date)
INSERT INTO @TempDate1 values ('2016-02-29')
;WITH
a AS(SELECT DATEADD(yy,-1,Entry_Date) d, DATEADD(yy,-1,Entry_Date) d2,0 i
FROM @TempDate1
UNION all
SELECT DATEADD(yy,-1,d),DATEADD(yy,-1,d2),i+1 FROM a WHERE i<14),
b AS(SELECT d,d2, DATEDIFF(dd,0,d)%7 dd,i FROM a)
SELECT
d AS Entry_Date
FROM b
它返回:
Entry_Date
2015-02-28
2014-02-28
2013-02-28
2012-02-28
2011-02-28
2010-02-28
2009-02-28
2008-02-28
2007-02-28
2006-02-28
2005-02-28
2004-02-28
2003-02-28
2002-02-28
2001-02-28
雖然我想有這樣的:只需使用EOMONTH
功能(SQL Server 2012中及以上)
Entry_Date
2015-02-28
2014-02-28
2013-02-28
2012-02-29
2011-02-28
2010-02-28
2009-02-28
2008-02-29
2007-02-28
2006-02-28
2005-02-28
2004-02-29
2003-02-28
2002-02-28
2001-02-28
而不是從前一個減去一年保持軌道的原始條目日期並使用'i'來減去正確的年數。 –