У нас возникла проблема с переходом на летнее время в PostgreSQL 9.0.10.В попытке использовать структуру файлов часового пояса ОС, мы заменили файлы PostgreSQL ссылкой на файлы часового пояса ОС (и переименовали в исходные)
$ ls -l /usr/local/pgsql/share/timezone/Brazil
/usr/local/pgsql/share/timezone/Brazil -> /usr/share/zoneinfo/Brazil/
При запросе к базе данных все выглядит хорошо:
=> SELECT * FROM pg_timezone_names where name like '%Brazil%';
name | abbrev | utc_offset | is_dst
---------------------------+--------+------------+--------
Brazil.original/DeNoronha | FNT | -02:00:00 | f
Brazil.original/East | BRST | -02:00:00 | t
Brazil.original/West | AMT | -04:00:00 | f
Brazil.original/Acre | AMT | -04:00:00 | f
Brazil/DeNoronha | -02 | -02:00:00 | f
Brazil/East | BRT | -03:00:00 | f
Brazil/West | -04 | -04:00:00 | f
Brazil/Acre | -05 | -05:00:00 | f
=> show timezone;
TimeZone
-------------
Brazil/East
«Бразилия / Восток», как показано выше, равно -03, с ложным DST.Но затем мы получаем это:
=> select now(), now() AT TIME ZONE 'Brazil/East';
now | timezone
-------------------------------+----------------------------
2018-10-21 11:25:51.300744-02 | 2018-10-21 11:25:51.300744
Мы ожидали увидеть «2018-10-21 10: 25: 51.300744-03», а не эту дату в «-02».
Есть идеи о том, чего нам здесь не хватает?