如何在SQL Server 2016中将“时区”返回值转换为实际日期时间值?

时间:2019-05-27 07:06:27

标签: sql-server sql-server-2016

我想直接将UTC值转换为SQL中的东部时区(任何时区)。我正在尝试在下面的查询中获取DATETIMEOFFSET。

我正在尝试将UTC日期时间以下的时间转换为东部时区。

SELECT CONVERT(DATETIME,'2019-05-27 13:00:00' AT TIME ZONE 'Eastern Standard Time'

我希望上述查询的输出为'2019-05-27 09:00:00',但实际输出为'2019-05-27 13:00:00 -04:00'

2 个答案:

答案 0 :(得分:1)

你可以做到

 select CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, '2019-05-27 13:00:00'), DATEPART(TZOFFSET, 
SYSDATETIMEOFFSET() AT TIME ZONE 'Eastern Standard Time')))

答案 1 :(得分:0)

您已经关闭。到目前为止,您已经将传入的日期时间告诉了SQL Server本机时区。现在,您需要告诉它将其转换为其他内容。这应该可以解决问题:

SELECT CONVERT(DATETIME,'2019-05-27 13:00:00')
   AT TIME ZONE 'Eastern Standard Time'
   AT TIME ZONE 'UTC';

这应该为您提供偏移-00:00的东西。如果您不希望这样做,请将结果转换回无时区的数据类型。