2012-08-14 2 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

윤일에는 어떻게됩니까? 롤 포워드 또는 롤백합니까? –

+0

2013 년에 실행 중이며 '20120229'와 함께 제공된 경우 예상되는 출력은 얼마입니까? –

+0

@JohnMitchell 2012는 아무런 문제가없는 윤년입니다 .-) –

답변

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

관련 문제