首页 > 解决方案 > SQL - 在时区

问题描述

我有这个查询正确地将中欧时间返回为 +2 小时。但是,它不会将这两个小时添加到时间中。如何添加这两个小时的时间(或 x 小时,具体取决于时区)?

DECLARE @targettimezone AS sysname = 'Central European Standard Time'
SELECT convert(datetime2,'2018-10-25T13:43:19.296Z') AT TIME ZONE @targettimezone;

标签: sqlsql-servertsqltimezone

解决方案


您可以尝试使用datetimeoffset而不是datetime2.

定义与具有时区意识且基于 24 小时时钟的一天中的某个时间相结合的日期。

然后将其转换datetimeoffsetDateTime可以得到您期望的结果。

DECLARE @targettimezone AS sysname = 'Central European Standard Time'
SELECT cast(cast('2018-10-25T13:43:19.296Z' as datetimeoffset) AT TIME ZONE @targettimezone as datetime2);

sqlfiddle


推荐阅读