2014-03-31 36 views
1

我在我的SQL表中有一列名爲'日期',其中日期以不同格式存儲,如: 25/5/2000, 2013年6月1日, 5/1/1996, 1990年1月23日等在SQL表中標準化一列

我想將所有這些日期轉換爲單一格式,例如DD/MM/YYYY或MM/DD/YYYY。我該怎麼做?

+0

什麼是您的'日期'列的數據類型?我猜它是varchar()。你怎麼知道任何日期的格式? –

+0

我同意其他人 - 類型應該是日期時間。我嘗試運行像'更新日期SET字符串日期= CONVERT(varchar,CAST(字符串日期時間),101)''它嘗試處理所有不同類型的日期失敗 – Danny

+0

有一種簡單的方法來將char轉換爲datetime,但沒有辦法來確定你在哪裏有每行的格式。 – Rodion

回答

0

使用DATE數據類型作爲存儲類型,並將格式保留到前端。

+0

DATE數據類型自sql 2008以來只是一種有效的類型(即2008,2008 R2和2012)。如果SQL Server的版本無法使用DATE –

+0

,但只有可能使用DATETIME或SMALLDATETIME當然,但2005年是9年和4個版本(2014年,2012年,2008年2月2008年),問題不是標籤爲2005,是嗎? :)此外,DATE似乎比DATETIME更適合現有的值。 – dean

0

試試這個!

create table Table(DateColumn varchar(20)) 

insert into Table values ('25/5/2000'), ('25052000'), ('5/1/1996'),('jan-23-1990'),(05012000) 

select 
    case len(DateColumn) 
    when 10 then convert(date, DateColumn, 103) 
    when 8 then convert(date, stuff(stuff(DateColumn, 5, 0, '/'), 3, 0, '/'), 103) 
    when 6 then convert(date, stuff(stuff(DateColumn, 5, 0, '/'), 3, 0, '/'), 3) 
    when 11 then convert(date,Datecolumn,103) 
-- depending on string length you may query this 
end 
from table 
+0

這給了我以下錯誤:「從字符串轉換日期和/或時間時轉換失敗」 –