Я работаю на SQL Server 2016+ и пытаюсь преобразовать UT C datetime в целевое datetime. Мои даты UT C не содержат информации о смещении; Как я могу преобразовать его в целевой часовой пояс?
Я использую синтаксис AT TIME ZONE
, но, поскольку у меня есть дата-время без смещения, он преобразует его в datetimeoffset. Я также попытался поместить синтаксис AT TIME ZONE
во внутренний запрос, например сначала преобразовать дату и время в дату и время со смещением, а затем преобразовать его во внешний запрос в целевой часовой пояс, используя AT TIME ZONE
2 раза, как показано ниже:
SELECT
DataTimeStamp AT TIME ZONE 'Mountain Standard Time' [LocalTime],
*
FROM
(SELECT
DateAdd(Minute, DateDiff(Minute, 0, i.DataTimeStamp) / 60 * 60, 0) AT TIME ZONE 'Mountain Standard Time' as 'DataTimeStamp' .....) t
Выходные данные 2020-01-15 07: 00: 00.000 -07: 00, я ожидаю, что 2020-01-15 00: 00: 00.000