1

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

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

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

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

2 回答 2

0

如果您可以识别日期格式的每一行,则可以将它们转换为日期类型。否则我认为这不会是完全正确的。例如,您不能为以下记录实现逻辑 - (03052013) 可以是 2013-05-03 或 2013-03-05。

于 2013-04-04T11:41:14.703 回答
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

于 2013-04-04T12:37:32.783 回答