特定日期的时间偏移

时间:2017-08-28 16:52:24

标签: sql sql-server time offset utc

我想知道是否有人知道将UTC转换为本地时间的功能,但是在保存记录时,而不是脚本运行的时间。

实施例: 我在2月份保存了一份记录,在8月份保存了另一份记录。两者都是UTC。 当我通过应用程序查看它们时,2月份显示时间-5小时,8月份显示时间-4小时。 当我运行SQL脚本时,我需要看到相同的内容,但是使用T-SQL函数都会显示他们的时间-5小时(或-4小时),具体取决于我运行脚本的时间。

进一步分析情况我意识到我的想法更复杂。 有4种可能性:在DST或ST期间保存的记录以及在DST或ST期间运行的SQL脚本。 如果两者都在DST或ST,那么我只需要减去偏移;如果记录保存在ST中并且查询在DST中运行,我将不得不减去偏移量 - 1但是如果是相反的话(在DST中记录并且脚本在ST中运行)我应该减去偏移量+ 1

1 个答案:

答案 0 :(得分:0)

我们假设UTC日期是2017-08-01 13:30:00而我在东海岸(美国)

Select DateAdd(MINUTE, DateDiff(MINUTE, GetUTCDate(), GetDate()), '2017-08-01 13:30:00') 

<强>返回

2017-08-01 09:30:00.000

另外,请查看SYSDATETIMEOFFSET()