2012-09-17 55 views
1

我正在解析Reddit RSS提要,并注意到时间是UTC。服务器位于EST中。服务器位于距UTC UTC时间-5小时的时区。如何将UTC时间码转换为EST?使用SQL 2012 Server将UTC时间转换为当地基准时间

注意:我也读过UTC不遵循夏令时(DST),我会计算出是否稍后使用日期范围调整小时差。

在RSS订阅

reddit的项目节点

<item> 
<title>blah blah</title> 
<link>http://blah.com</link> 
<guid isPermaLink="true">http://www.reddit.com/r/blah/comments/blah</guid> 
<pubDate>Sun, 16 Sep 2012 21:39:17 -0700</pubDate> 
<description>blah description</description> 
</item> 

我想出了这个至今:

DECLARE @d DATETIMEOFFSET; 
SET @d = 'Sep 2012 21:39:17 -07:00' 

DECLARE @off datetime 
SET @off = SWITCHOFFSET(@d, '-05:00') 

DECLARE @dates TABLE (
converteddate DATETIME 
); 

insert into @dates (converteddate) 
Values (@off) 

select * from @dates 

回答

3

我的例子似乎是从我读过的答案。如果您通过服务器的UTC时间偏移抵消UTC时间,您将获得服务器的本地时间。在这种特殊情况下,服务器是UTC -05:00

在这个例子中pubdate的的节点是:

Sun, 16 Sep 2012 21:39:17 -0700 

我解析reddit的RSS提要,并发送pubdate的节点为文本SQL。我重新格式化pubdate的的字符串是:

Sep 2012 21:39:17 -07:00 

我想出了存储过程:

[email protected] was sent to SQL from web app as 'Sep 2012 21:39:17 -07:00' 

@pubdate varchar(50) 

DECLARE @d DATETIMEOFFSET; 
SET @d = @pubdate 

DECLARE @off datetime 
SET @off = SWITCHOFFSET(@d, '-05:00') 

INSERT INTO feed (pubdate) 
VALUES (@off) 
1

DECLARE @Mydate SET @Mydate = DATEADD(分钟,DATEDIFF(分钟,GETDATE() GETUTCDATE()),@DateToConvert)

+1

只是给你一个小解释你的答案。它也会帮助其他人。 –