Преобразование метки времени из строки в текущее время в Synapse

#sql #azure-synapse #datetime2

#sql #azure-synapse #datetime2

Вопрос:

Я новичок в хранилище данных Synapse.

В настоящее время у меня есть столбец метки времени с именем last_update_utc в качестве строкового типа данных, и это время UTC. Мне нужно добавить новый столбец last_update_est с меткой времени в качестве datetime2 преобразование типа данных из столбца last_update_utc — преобразование также должно учитывать летнее время. Вы можете проверить пример вывода ниже:

 id | last_update_utc (string)     | last_update_est (datetime2)
1  | 2020-02-28T17:26:47.483698Z  | 2020-02-28T12:26:47.483698Z
2  | 2021-09-03T22:59:19.093Z     | 2021-09-03T18:59:19.093Z
 

Первая строка, это 5 часов разницы без DST и 4 часа разницы с DST. Имя таблицы hub.test и изначально есть столбцы id и last_update_utc.

Существует ли простая функция или метод для выполнения вышеуказанной задачи в Synapse DW?

Спасибо

Ответ №1:

Преобразуйте строку в datetime2 и примените к ЧАСОВОМУ ПОЯСУ, чтобы преобразовать UTC в требуемый часовой пояс.

 SELECT CONVERT(DATETIME2, '2021-09-03T22:59:19.093Z') AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'as last_update_est
 

введите описание изображения здесь

Обратитесь к этому документу, чтобы узнать больше о реализации в ЧАСОВОМ ПОЯСЕ.