将字符串GMT日期格式更改为DQL服务器UTCDate

时间:2015-11-16 09:22:09

标签: sql sql-server-2008-r2

我有一个字符串。

  

Mon Nov 16 07:36:05 IST 2015

我想将此String转换为SQl Server 2008 GETUTCDATE()格式。

  

2015-11-16 09:21:03.107

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

没有什么是不可能的。 MS SQL Server将许多格式转换为datetime。你可以试试这个:

declare @d varchar(50)='Mon Nov 16 07:36:05 IST 2015'
;with dd as (--reorganize the string and build xml
select cast('<dd><d>'+replace(@d,' ','</d><d>')+'</d></dd>' as xml) d
)
select dateadd(hh,--add hours
case t.v.value('d[5]','varchar(10)') --process time zone
     when 'IST' then 2 --probably you need some reference table
     when 'EST' then -5 
     else 0 end,
cast(t.v.value('d[2]','varchar(10)') +' '+t.v.value('d[3]','varchar(10)') 
+' '+t.v.value('d[6]','varchar(10)') +' '+t.v.value('d[4]','varchar(10)') 
--Nov 16 2015 07:36:05 can be converted
    as datetime)) [date and time]
from dd cross apply dd.d.nodes('dd') t(v)