【发布时间】:2015-01-08 19:09:53
【问题描述】:
我正在使用 SQL 来创建会议/活动。会议需要保存为 UTC,然后根据最终用户查看会议的时区显示给最终用户。
由于最终用户可以选择会议时间,我需要将该时间转换为 UTC。从那里,我将传递本地用户的偏移量并将其转换为他们的本地时间。
这是我所做的,我猜是错误的,因为结果不正确:
-- Declare the local offset
DECLARE @offset INT = '420'
-- Convert a date/time to UTC
SELECT DATEADD(hh, DateDiff(hh, GetDate(), GetUTCDate()), '2015-01-08 17:45:00') AS ConvertedToUTC;
-- Convert a UTC back to local based on offset
SELECT DATEADD(minute, @offset, '2015-01-08 23:45:00.000') AS ConvertedToLocal
转换后的UTC = 2015-01-08 23:45:00.000
convertedLocal = 2015-01-09 06:45:00.000
示例:Bob 为 2015 年 1 月 8 日下午 1:00 创建了一个会议,他们位于亚利桑那州。我需要将该时间转换为 UTC,因此当 Jim 从奥马哈过来并查看会议列表时,它会根据他的偏移量显示调整后的时间。
有关如何正确处理此问题的任何提示?
【问题讨论】:
-
我强烈建议您查看 SQL 中的 DATETIMEOFFSET 数据类型。
标签: javascript sql-server date datetime sql-server-2012