一尘不染

使用SQL 2012 Server将UTC时间转换为基准本地时间

sql

我在解析Reddit RSS提要时发现,现在是UTC时间。该服务器位于EST中。服务器位于离UTC -5小时的时区。如何将UTC时间码转换为EST?

注意:我还读到UTC并不遵循夏令时(DST),我将弄清楚以后是否通过使用日期范围来调整时差。

RSS Feed中的Reddit Item节点

<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

阅读 229

收藏
2021-05-16

共1个答案

一尘不染

我的例子似乎是我所读内容的答案。如果您用服务器的UTC时间偏移量来偏移UTC时间,则会得到服务器的本地时间。在这种情况下,服务器为UTC -05:00

在此示例中,pubDate的节点为:

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

我解析Reddit RSS feed并将pubDate节点作为文本发送到SQL。我将pubDate的字符串重新格式化为:

Sep 2012 21:39:17 -07:00

我想出的存储过程:

--@pubdate 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)
2021-05-16