2017-07-25 253 views
0

我有一個postgres表,其中有一列是帶時區的時間戳。存儲的數據是UTC。我想將此列從UTC轉換爲不同的時區。我如何選擇在postgres中考慮夏令時的正確時區?我看了一下pg_timezone_names視圖,並知道postgres支持的實際縮寫。我擔心的是,像加利福尼亞州這樣的某些州在一年中部分時間使用PST和PDT。postgres夏令時timezone

我懷疑,像select current_time at time zone 'PDT'select current_time at time zone 'PST'這樣的代碼不會給我在加州全年的正確時間。我有理解這個權利嗎?

我知道我可以做一些像select current_time at time zone 'America/New_York'America/Los_Angeles。我期望這樣的事情能夠考慮到節省白天的時間,因爲我明確指定了位置。這是處理postgres夏時制問題的唯一正確方法嗎?

理想情況下,我不想明確指定位置,並希望使用postgres時區縮寫。這可以做到嗎?

回答

0

我和你有同樣的問題。我能提供的最好的方法是指向我剛發現的他們的文檔頁面。 pg_timezone_names documentation

的觀點pg_timezone_names提供被 通過SET TIMEZONE認可,與其相關的縮寫, UTC偏移和夏令狀態一起的時區名稱的列表。與pg_timezone_abbrevs中顯示的縮寫 不同,這些名稱中的許多名稱暗示了一組 夏令時轉換日期規則。因此,相關聯的 信息會在本地DST邊界之間更改。顯示的 信息根據當前值 CURRENT_TIMESTAMP計算得出。

我認爲這是有道理的,是最好的,我們可以希望。不幸的是,時區縮寫並不包含DST規則,我認爲是因爲沒有特定的地理區域可以隱含,因此它們只是UTC偏移的符號。