我有一个带有datetime2对象的SQL表,它们以UTC TIME
存储例如
UTC_TIME = 2017-10-20T13:16:14.6950000
我已使用
成功将此时间戳转换为本地时间SELECT UTC_TIME AT TIME ZONE 'W. Europe Standard Time' AS LOCAL_TIME
以上的输出是
2017-10-20T13:16:14.6950000 + 02:00
这是正确的,但我想要的输出是
2017-10-20T15:16:14.6950000
应将偏移量添加到我的时间戳中。
有一种简单的方法吗?
示例: 在UTC时间2017-10-20T13:16:14.6950000上记录了一个事件 我在西欧,目前有2小时的抵消。因此,当地时间2017-10-20T15:16:14.6950000
我想转换UTC时间(13:16),结果是15:16
查询在以UTC时区运行的服务器上执行。
答案 0 :(得分:0)
当AT TIME ZONE返回DateTimeOffset时,您可以将CONVERT
与选项1一起使用。
DECLARE @UTC_TIME DATETIME2(7) = '2017-10-20T13:16:14.6950000'
SELECT CONVERT(datetime2, (@UTC_TIME AT TIME ZONE 'Pacific Standard Time'), 1) AS OrderDate_TimeZonePST
答案 1 :(得分:0)
您可以使用sysdatetimeoffset
执行此操作declare @UTC_Time datetime2 = '2017-10-20T13:16:14.6950000'
Select dateadd(minute, datepart(TZoffset, sysdatetimeoffset()), @UTC_Time)
答案 2 :(得分:0)
这似乎是这样做的方法:
DECLARE @UTC_TIME DATETIME2(7) = '2017-10-20T13:16:14.6950000'
SELECT
@UTC_TIME AS T0,
@UTC_TIME AT TIME ZONE 'W. Europe Standard Time' AS T1,
dateadd(minute,DATEdiff(minute,@UTC_TIME AT TIME ZONE 'W. Europe Standard Time',@UTC_TIME ),@UTC_TIME) as T2
结果是 T0:2017-10-20T13:16:14.6950000
T1:2017-10-20T13:16:14.6950000 + 02:00
T2:2017-10-20T15:16:14.6950000
T2是我们在本地时钟上看到的在UTC时间发生的事件T0