将varchar类型转换为日期类型时遇到了一些麻烦
在SQL-server 2008中,我在VARCHAR类型中有一个包含不同类型日期的表
例如:
DDMMYYYY (05032013)<br/>
MMDDYYYY (03052013)<br/>
YYYYMMDD (20130305)<br/>
...
我必须使用SQL查询将这些不同的字符串类型转换为“date”。 有什么建议我怎么做? 这些是我的记录:
TYPE || FORMAT
____________________
DDMMYYYY||05032013
MMDDYYYY||03052013
YYYYMMDD||20130305
答案 0 :(得分:0)
如果您可以识别日期格式的每一行,您可以将它们转换为日期类型。否则我不认为这是完全正确的。例如,您无法为以下记录实现逻辑 - (03052013)可以是2013-05-03或2013-03-05。
答案 1 :(得分:0)
试试这个
SELECT case
when type='DDMMYYYY' then convert(date,STUFF(STUFF('05032013',3,0,'-'),6,0,'-'),105)
when type='MMDDYYYY' then cast(substring('03052013',5,4)+'-'+substring('03052013',0,3)+'-'+substring('03052013',3,2) as date)
when type='YYYYMMDD' then cast(STUFF(STUFF('20130305',5,0,'-'),8,0,'-') as date)
end