postgresql - как извлечь список прошлых и известных будущих изменений смещения для часового пояса
Postgresql довольно хорошо справляется с часовыми поясами, используя классическую базу данных tzdata.
Сервер может преобразовывать прошлые и будущие временные метки между различными часовыми поясами, следуя правилам в tzdata (смещения, изменения dst, ..)
Существует ли простой и эффективный способ для данного часового пояса и данного диапазона дат извлечь все временные метки в этом диапазоне, когда произошло событие модификации часового пояса?
результат должен более или менее содержать эквивалент выходных данных zdump
команда Linux.
zdump -v /usr/share/zoneinfo/America/Los_Angeles | grep 2017
Sun Mar 12 09:59:59 2017 UTC = Sun Mar 12 01:59:59 2017 PST isdst=0 gmtoff=-28800
Sun Mar 12 10:00:00 2017 UTC = Sun Mar 12 03:00:00 2017 PDT isdst=1 gmtoff=-25200
Sun Nov 5 08:59:59 2017 UTC = Sun Nov 5 01:59:59 2017 PDT isdst=1 gmtoff=-25200
Sun Nov 5 09:00:00 2017 UTC = Sun Nov 5 01:00:00 2017 PST isdst=0 gmtoff=-28800
1 ответ
select d::date
from (
select
d at time zone 'America/Los_Angeles' as la,
lead(d at time zone 'America/Los_Angeles') over (order by d) as la_,
d
from generate_series (
'2017-01-01'::timestamp,
'2017-12-31', '1 day'
) gs (d)
) s
where la::time <> la_::time;
d
------------
2017-03-12
2017-11-05