[an error occurred while processing this directive]

Отмена перехода на зимнее время в PostgreSQL
В PostgreSQL используется своя внутренняя таблица временных зон
(postgresql-x.x.x/src/timezone), поэтому обновление системной базы zoneinfo не
повлияет на перевод часов в PostgreSQL.

Смотрим текущее состояние:

   SELECT * FROM pg_timezone_names;

   Europe/Moscow                    | MSK    | 03:00:00   | f

Как видим часы перевелись и используется смещение +3 вместо +4.

   SELECT now();
   2011-11-01 11:00:19.834213+03

   SELECT now()-'6 days'::interval;
   2011-10-26 11:00:52.155833+04

Копируем актуальные данные из обновлённой в системе базы часовых поясов. База
часовых поясов в PostgreSQL может оказаться в /usr/local/share/pgsql/timezone,
/usr/share/pgsql/timezone или /usr/local/pgsql/share/timezone/. Например:

   cp -f /usr/share/zoneinfo/Europe/Moscow /usr/share/pgsql/timezone/Europe/Moscow
 
После этого "SELECT * FROM pg_timezone_names" отобразит изменения, но чтобы они
подействовали обязательно требуется перезапустить PostgreSQL.

Для изменения часового пояса для конкретной БД можно использовать конструкцию:

   ALTER DATABASE mydb SET timezone TO 'Asia/Yekaterinburg';

Из других подводных камней, которые обнаружились при отмене перехода на зимнее
время можно упомянуть забытое обновление /etc/localtime в chroot-окружениях и
необходимость перезапуска демона cron.
 
01.11.2011
Ключи: postgresql, timezone, zoneinfo / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / PostgreSQL специфика / Оптимизация и администрирование PostgreSQL

[an error occurred while processing this directive]

[an error occurred while processing this directive]