2014-03-31 40 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

这给了我以下错误:“从字符串转换日期和/或时间时转换失败” –