我有一个包含日期的长字符串(列类型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.
答案 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)))