From: | "Alexander M(dot) Pravkin" <fduch(at)antar(dot)bryansk(dot)ru> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Косяки с отменой летнего времени |
Date: | 2011-09-08 14:40:45 |
Message-ID: | 20110908144045.GC3409@dyatel.antar.bryansk.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Обновил сегодня системную zoneinfo (FreeBSD 8.2), привязал к ней же
postgresql (в 8.4.8 ещё не внесли tzdata 2011i).
Напоролся на интересный косяк:
fduch(at)~=# SHOW timezone;
TimeZone
---------------
Europe/Moscow
fduch(at)~=# SET datestyle TO German ;
SET
fduch(at)~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz);
date_trunc
-------------------------
01.09.2011 00:00:00 MSK
fduch(at)~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz) = '01.09.2011'::timestamptz;
?column?
----------
t
fduch(at)~=# SELECT date_trunc('month', '01.09.2011 00:00:00 MSK'::timestamptz) = '01.09.2011 00:00:00 MSK'::timestamptz;
?column?
----------
f
fduch(at)~=# 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(at)~=# 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
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2011-09-19 07:50:55 | Rule'ы и ссылки на другие таблицы |
Previous Message | Nick Kostirya | 2011-08-10 09:28:49 | Потерял заметку... |