2013-04-06 108 views
0

我有一個日期,其格式爲"mm/yyyy",其數據類型爲varchar。如何將「mm/yyyy」varchar轉換爲datetime?

我想日期"mm/dd/yyyy"格式

如:存儲在數據庫中4/2013

我想

30/4/2013 
+0

哪裏'dd'部分去了..? – 2013-04-06 05:52:31

+1

那麼你想要一個月的最後一天?你想輸出作爲一個日期或作爲一個不明確格式的區域字符串?你不能擁有兩個。 – 2013-04-06 11:30:23

+0

我希望月份的最後一個日期作爲日期 – Girish 2013-04-06 12:52:04

回答

1
DECLARE @d VARCHAR(32) = '4/2013'; 

-- as a datetime 

SELECT DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103))); 

-- as a date 

SELECT CONVERT(DATE, DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103)))); 

-- as an ambiguously formatted regional string 

SELECT CONVERT(CHAR(10), DATEADD(DAY,-1,DATEADD(MONTH,1, 
    CONVERT(DATETIME,'1/'[email protected],103))),103); 

是惱人的?好!首先以正確的方式存儲日期。並且不要將數據庫視爲以特定格式存儲/呈現日期的地方 - 必要時在客戶端進行格式設置,而且除非受衆人數非常有限,否則通常採用區域格式是一個壞主意。

+0

CONVERT(CHAR(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(DATETIME,'1 /'+ @ d,103)),103)是工作,在上面的小變化,我糾正它,請檢討它謝謝 – Girish 2013-04-06 12:56:10

+0

對不起,在我的iPad上鍵入,不知道'1'去了哪裏。 – 2013-04-06 13:03:54