我在我的SQL表中有一列名为'日期',其中日期以不同格式存储,如: 25/5/2000, 2013年6月1日, 5/1/1996, 1990年1月23日等在SQL表中标准化一列
我想将所有这些日期转换为单一格式,例如DD/MM/YYYY或MM/DD/YYYY。我该怎么做?
我在我的SQL表中有一列名为'日期',其中日期以不同格式存储,如: 25/5/2000, 2013年6月1日, 5/1/1996, 1990年1月23日等在SQL表中标准化一列
我想将所有这些日期转换为单一格式,例如DD/MM/YYYY或MM/DD/YYYY。我该怎么做?
使用DATE数据类型作为存储类型,并将格式保留到前端。
DATE数据类型自sql 2008以来只是一种有效的类型(即2008,2008 R2和2012)。如果SQL Server的版本无法使用DATE –
,但只有可能使用DATETIME或SMALLDATETIME当然,但2005年是9年和4个版本(2014年,2012年,2008年2月2008年),问题不是标签为2005,是吗? :)此外,DATE似乎比DATETIME更适合现有的值。 – dean
试试这个!
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
这给了我以下错误:“从字符串转换日期和/或时间时转换失败” –
如果您尝试在您的列中转换日期,请使用此示例网站了解您要完成的操作,希望这有助于感谢。 http://www.codeproject.com/Articles/576178/cast-convert-format-try-parse-date-and-time-sql
什么是您的'日期'列的数据类型?我猜它是varchar()。你怎么知道任何日期的格式? –
我同意其他人 - 类型应该是日期时间。我尝试运行像'更新日期SET字符串日期= CONVERT(varchar,CAST(字符串日期时间),101)''它尝试处理所有不同类型的日期失败 – Danny
有一种简单的方法来将char转换为datetime,但没有办法来确定你在哪里有每行的格式。 – Rodion