2010-02-11 129 views
1

如何從字符串日期時間獲得年份(2009)和月份(12),以下給出正確的完整日期但錯誤的年份(1905-07-03 00:00: 00.000)和月份(1900-01-13 00:00:00.000)。我曾嘗試將YYYY更改爲年份和月份。將字符串轉換爲日期時間爲年份和月份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]; 

到目前爲止,沒有任何SO建議工作。

問候 ķ

回答

1

如果你想使用DATEPART,使用您的年份和月份部分YEAR (YY or YYYY)MONTH (M or MM)

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 2010-02-11 18:32:52

1

工作的呢?

declare @d datetime 
select @d = '20091231' 

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

0123類似的..分配給@CurrentYear和@CurrentMonth導致日期出錯,當我「選擇DATEPART(YYYY,@ date)作爲[year],DATEPART(MM,@ date)作爲[Month] 「它工作 – TheOCD 2010-02-11 18:32:28

相關問題