将不同的varchar日期转换为日期

时间:2013-04-04 11:23:16

标签: sql-server-2008

将varchar类型转换为日期类型时遇到了一些麻烦 在SQL-server 2008中,我在VARCHAR类型中有一个包含不同类型日期的表 例如:

DDMMYYYY (05032013)<br/>
MMDDYYYY (03052013)<br/>
YYYYMMDD (20130305)<br/>
...

我必须使用SQL查询将这些不同的字符串类型转换为“date”。 有什么建议我怎么做? 这些是我的记录:

TYPE    ||    FORMAT  
____________________
DDMMYYYY||05032013  
MMDDYYYY||03052013  
YYYYMMDD||20130305

2 个答案:

答案 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