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
Другие вопросы по тегам