Я хочу напрямую преобразовать значение UTC в восточный часовой пояс (любой часовой пояс) в SQL. Я пытаюсь выполнить запрос ниже, но получаю DATETIMEOFFSET.
Я пытаюсь преобразовать ниже UTC DateTime в восточный часовой пояс.
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».
ты можешь это сделать
select CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, '2019-05-27 13:00:00'), DATEPART(TZOFFSET,
SYSDATETIMEOFFSET() AT TIME ZONE 'Eastern Standard Time')))
Вы близко. До сих пор вы сообщали SQL Server собственный часовой пояс для даты и времени, которую вы передали. Сейчас вам нужно сообщить ему, чтобы преобразовать его во что-то другое. Это должно помочь:
SELECT CONVERT(DATETIME,'2019-05-27 13:00:00')
AT TIME ZONE 'Eastern Standard Time'
AT TIME ZONE 'UTC';
Это должно дать вам что-то со смещением -00:00
. Если вы этого не хотите, верните результат обратно в тип данных без часового пояса.