我想知道是否有人知道将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
答案 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()