Будет ли convert_timezone 'America / New_York' работать независимо от смещения моего часового пояса в зависимости от времени года? - PullRequest
2 голосов
/ 15 мая 2019

Мой часовой пояс -4 или -5 от GMT в зависимости от времени года.В настоящее время это -4.

Если я использую этот код ниже, будет ли он автоматически переключаться при изменении на -5?

select convert_timezone('America/New_York', CAST(json_extract_path_text('{"timestamp":"2019-04-16T03:30:00.704Z"}', 'timestamp') as TIMESTAMP));

В настоящее время строка выше возвращает дату 2019-04-15.

Но если я сделаю этот звонок в декабре (обратите внимание, что у времени +1 час), он все равно вернет дату 2019-04-15.

select convert_timezone('America/New_York', CAST(json_extract_path_text('{"timestamp":"2019-04-16T04:30:00.704Z"}', 'timestamp') as TIMESTAMP));

ВДругими словами, будет ли он переключаться между EDT и EST без вмешательства?Или есть лучший способ?

Спасибо

1 Ответ

3 голосов
/ 15 мая 2019

Рассмотрим:

  • 2019-04-16T03:30:00.704Z (UTC) в America/New_York равно 2019-04-15T23:30:00.704-04:00

  • 2019-04-16T04:30:00.704Z (UTC) в America/New_York равно 2019-04-16T00:30:00.704-04:00

  • 2019-12-16T04:30:00.704Z (UTC) в America/New_York равно 2019-12-15T23:30:00.704-05:00

Для восточного времени США дата в апреле будет в -4, а в декабре - в -5. Другими словами, конвертируемая временная метка определяет, какое смещение применить.

Дата и время выполнения кода не имеют значения .

...