2010-02-11 3 views
1

문자열 날짜/시간에서 년 (2009) 및 월 (12)을 구하고 정확한 전체 날짜를 제공하지만 잘못된 연도를 지정하는 방법 (1905-07-03 00:00 : 00.000) 및 월 (1900-01-13 00 : 00 : 00.000). 저는 YYYY를 MM으로, MM을 월로 바꿔 보았습니다.문자열을 datetime에서 년 및 월로 변환 SQL

Declare @date dateTime; 
Declare @CurrentYear datetime; 
Declare @CurrentMonth datetime; 
Select @date = CONVERT (datetime , '20091231' ,112); 
Select @CurrentYear = DATEPART(YYYY,@date); 
--Select @CurrentYear = YEAR(@Date); <---- still wrong year 
Select @CurrentMONTH = DATEPART(MM,@date); 
--Select @CurrentMonth = MONTH(@date); <---- still wrong year 
select @date as fulldate, @CurrentYear as [year], @CurrentMonth as [Month]; 

지금까지 아무 것도 제안되지 않았습니다.

관련 K

답변

1

당신이 당신의 연도와 월 부품 YEAR (YY or YYYY) 또는 MONTH (M or MM) 사용 DATEPART을 사용하려면 :

DECLARE @date DATETIME 
SET @date = CAST('20091231' as DATETIME) -- ISO-8601 format always works 

SELECT 
    DATEPART(YEAR, @date), -- gives 2009 
    DATEPART(YYYY, @date), -- gives 2009 
    DATEPART(MONTH, @date), -- gives 12 
    DATEPART(MM, @date)  -- gives 12 

전혀 그 도움을합니까를?

+0

덕분에 ISO 8601을 사용하도록 코드를 변경했습니다. – TheOCD

1

이 작동합니까?

declare @d datetime 
select @d = '20091231' 

select YEAR(@d),MONTH(@d), year(getdate()) as CurrentYear 
+0

일종의 @CurrentYear 및 @CurrentMonth에 대한 할당은 "년"으로 DATEPART (YYYY, @ 날짜)를 선택하면 날짜가 잘못 될 수 있습니다. DATEPART (MM, @ 날짜)는 [월] "그것은 – TheOCD