2013-04-04 85 views
1

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

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

我必须将这些不同的字符串类型转换成键入“日期”使用SQL查询。 任何建议如何我可以做到这一点?
这是我的记录:

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

将如何确定给定的日期是否在** ** DDMMYYYY **或** MMDDYYYY **或** YYYYMMDD。如果你能回答这个问题,我们会确保你会得到答案。 **:)**好问题+1 – Luv 2013-04-04 11:40:15

回答

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

0

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

+0

在我的表格中,我有一个标识格式的列和另一个格式为日期的列。这是必须转换为“日期”类型的日期。 – Jelle 2013-04-04 11:42:37

+0

给我们提供表格和一些记录的DataStructure。也给我们代码的含义。 – Luv 2013-04-04 11:44:54

+0

查看我的问题的正确格式的审查。 – Jelle 2013-04-04 12:13:09