Плохо ли устанавливать конкретный часовой пояс для базы данных PostgreSQL? - PullRequest
1 голос
/ 09 ноября 2019

Я перемещаю одно веб-приложение (PHP 7.3 / PostgreSQL 11) на новый сервер.

Ничего особенного, кроме одного момента: разница часовых поясов

  • Старое время серверав нашем часовом поясе (Европа / Брюссель)
  • Время нового сервера зафиксировано в UTC

У меня нет никаких прав изменять этот параметр на новом сервере.

Поскольку многие таблицы используют NOW () в качестве значения по умолчанию для большого количества полей «отметка времени без часового пояса», а многие запросы также используют NOW () или CURRENT_TIME, я хотел бы изменить часовой пояс по умолчанию для базы данных.

Я думал установить часовой пояс по умолчанию для базы данных, выполнив ALTER database my_db SET timezone ='Europe/Brussels', но я вижу эту заметку по Heroku (https://help.heroku.com/XKRPVR53/how-to-change-timezone-for-postgres), которая, кажется, говорит, что это плохая практика.

Это действительно плохая практика, чтобы установить часовой пояс для базы данных?

Чтобы завершить, это веб-приложение для конкретной страны, оно не использует дату / время других часовых поясов.

Большое спасибо в advза ваши советы!

1 Ответ

2 голосов
/ 09 ноября 2019

Я не согласен с Heroku.

Совершенно хорошо управлять часовыми поясами с PostgreSQL. Все, что вам нужно иметь в виду, это то, что timezone это клиент часовой пояс. В настройке по умолчанию нет ничего плохого, но каждый сеанс должен правильно задавать параметр.

Я думаю, что есть две хорошие архитектуры:

  • Управление часовыми поясами вбазы данных и использовать timestamp with time zone по всему.

  • Управление часовыми поясами в приложении и использование timestamp without time zone по всему.

Смешивание этих стратегий обычно приводит кк проблемам.

...