PostgreSQL UTC по британскому местному времени - PullRequest
0 голосов
/ 03 апреля 2019

Я использую postgreSQL 10.1.

У меня есть даты, которые были созданы в UTC, в метке времени без столбцов часовых поясов.Мне нужно вернуть их как правильное британское местное время для каждого (GMT или BST).

Я пробовал AT TIME ZONE, и часовые пояса BST / GMT кажутся фиксированными с их собственными смещениями, независимо от того, когдав году произошла временная метка.

В ЗОНЕ ВРЕМЕНИ «UTC» В ЗОНЕ ВРЕМЕНИ «Европа / Лондон», кажется, дает мне то, что я хочу, показывая метку времени UTC как GMT или BST правильно (в небольшой выборке яя уже пробовал), хотя я не могу найти этот часовой пояс надлежащим образом задокументированный относительно его правил перехода на летнее время.

Может кто-нибудь указать мне правильное направление или на надежную альтернативу?

1 Ответ

1 голос
/ 03 апреля 2019

Ваше решение верное:

AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/London'

Первый присваивает UTC метке времени, второй преобразует из UTC в часовой пояс Europe/London.

Документация Postgres состояния:

... PostgreSQL использует широко используемую базу данных часовых поясов IANA (Olson) для получения информации о исторических правилах часовых поясов. ...

Он также поддерживает другие формы часовых поясов, упомянутых в той же документации, но Europe/London является часовым поясом IANA. Вы можете увидеть это в списке часовых поясов IANA здесь . Вы также можете посмотреть подробности определения этого часового пояса, изучив источники TZDB здесь или просмотреть более понятную историю изменений времени в Лондоне здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...