Косяки с отменой летнего времени
От | Alexander M. Pravkin |
---|---|
Тема | Косяки с отменой летнего времени |
Дата | |
Msg-id | 20110908144045.GC3409@dyatel.antar.bryansk.ru обсуждение исходный текст |
Список | pgsql-ru-general |
Обновил сегодня системную zoneinfo (FreeBSD 8.2), привязал к ней же postgresql (в 8.4.8 ещё не внесли tzdata 2011i). Напоролся на интересный косяк: fduch@~=# SHOW timezone; TimeZone --------------- Europe/Moscow fduch@~=# SET datestyle TO German ; SET fduch@~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz); date_trunc ------------------------- 01.09.2011 00:00:00 MSK fduch@~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz) = '01.09.2011'::timestamptz; ?column? ---------- t fduch@~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz) = '01.09.2011 00:00:00 MSK'::timestamptz; ?column? ---------- f fduch@~=# select extract(epoch from date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz)), extract(epoch from '01.09.2011'::timestamptz), extract(epoch from '01.09.2011 00:00:00 MSK'::timestamptz); date_part | date_part | date_part ------------+------------+------------ 1314820800 | 1314820800 | 1314824400 Всё это связано с тем, что наша нынешняя TZ называется MSK и имеет +0400 без DST, а у PG прописано: fduch@~=# SELECT * from pg_timezone_abbrevs where abbrev in ('MSK','MSD'); abbrev | utc_offset | is_dst --------+------------+-------- MSD | 04:00:00 | t MSK | 03:00:00 | f То есть output у него "правильный", а input из расчёта что MSK -- это GMT+3 Вопрос вытекает сам собой: и что теперь делать-то? Может, кто-то уже сталкивался? -- Alexander M. Pravkin
В списке pgsql-ru-general по дате отправления: