T-SQL将字符串转换为日期

时间:2015-08-24 19:18:27

标签: sql

我有一个包含日期的长字符串(列类型nvarchar);我正在提取此日期并将字符串复制到新表中。此字符串具有以下格式:

Mon, 3 Dec 2012 11:53:07 +0000

我想将此转换为日期:

select convert(datetime,'Mon, 3 Dec 2012 11:53:07 +0000',101) from table

但是我收到了这个错误:

Conversion failed when converting datetime from character string.

1 个答案:

答案 0 :(得分:0)

要完整处理该字符串,解决方案并不简单,因为没有一种标准格式匹配。相反,你需要撕掉一些比特并用它来匹配标准格式,然后根据需要进行操作:

declare @d nvarchar(128) = 'Mon, 3 Dec 2012 11:53:07 +0000'
, @dt datetime
, @hh int
, @mm int
select @dt = SUBSTRING(@d,PATINDEX('%[0-9]%',@d),charindex('+',@d)-1-PATINDEX('%[0-9]%',@d))
, @hh = cast(SUBSTRING(@d, LEN(@d)-5,1) + SUBSTRING(@d, LEN(@d)-4,2) as int) 
, @mm = cast(SUBSTRING(@d, LEN(@d)-5,1) + SUBSTRING(@d, LEN(@d)-2,2) as int)
select dateadd(minute,@mm,dateadd(hour,@hh,convert(datetime,@dt,113)))