2012-08-14 48 views
0

我想對傳遞給存儲過程的值執行一個小的日期操作。T-SQL - 接收日期值並調整日/月的保留年份

示例輸入;

31/12/2008 
15/11/2007 
21/05/2005 

預期產量;

31/12/2012 
15/11/2012 
21/05/2012 

提供的答案的格式化代碼;

DECLARE @date DATETIME = '31/12/2007' 
DECLARE @year INT 
SET @year = DATEPART(YEAR, GETDATE()) 
SELECT DATEADD(YEAR, @year - DATEPART(YEAR, @date), @date) 
+3

閏日會發生什麼?它前滾還是後滾? – 2012-08-14 10:45:50

+0

如果在2013年運行,並提供'20120229',預期輸出是什麼? – 2012-08-14 10:46:22

+0

@JohnMitchell 2012是一個閏年,所以沒有問題;-) – 2012-08-14 10:56:04

回答

4

您試圖將年份轉換爲2012?

-- get the year part 
DATEPART(YEAR, [Date]) 

-- get the number of years to add 
2012 - DATEPART(YEAR, [Date]) 

-- add that many years to the date 
DATEADD(YEAR, 2012 - DATEPART(YEAR, [Date]), [Date]) 
+0

謝謝。公認。 – CaRDiaK 2012-08-14 11:00:58

相關問題