diffor (diffor) wrote,
diffor
diffor

Category:

летнее время PostgreSQL на Windows

Дано: PostgreSQL 8.4.4 на Windows 2003 с часовым поясом Азия/Новосибирск.

После перехода на летнее время начал некорректно отрабатывать now(),localtimestamp и иже с ними - показывают на час меньше системного времени, причём в тойже Pg на Linux всё корректно...

В результате ковыряний обнаружилась интересная весч:
Запрос: show timezone
Ответ: Asia/Almaty
Хотя должно быть Asia/Novosibirsk... Как показал гугль, время в Алматы на летнее не переводится...

Лечение - в конфиг postgresql.conf добавляем строчку:
timezone = 'Asia/Novosibirsk'
(!) кавычки обязательны

Upd. Отправил багрепорт разработчикам, тикет №5466
Upd 2. Выяснил причину: December 2009 cumulative time zone update for Microsoft Windows operating systems
Upd 3. Написал патч =) Дифф для файла src/timezone/pgtz.c

892c892
<               "Asia/Almaty"
---
>               "Asia/Novosibirsk"

Upd 4. Патч приняли, в следующем релизе этой проблемы не будет.
Upd 5. Вышла версия 8.4.5 с исправлением.
Tags: bug, daylight saving time, dst, fix, patch, postgresql, windows
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments