2017-06-17 35 views
0

簡而言之,在輸入到我的Postgres DB時,我有一個格式爲「2014-12-10T12:00:14 + 07:00」的時間戳,我想用'timestampandtz'Postgres C擴展名(https://github.com/mweber26/timestampandtz) ,但我不知道如何處理確定時區的問題。在帶有C擴展名的Postgres DB中存儲帶時區的時間戳?

由於擴展名將輸入與zones.c中的完整時區名稱進行比較,數據類型將不知道如何處理「+07:00」而不是「@ Continent/City」,它期望在輸入。

事情是,我需要從「+07:00」以某種方式拉出城市,因爲我確實需要夏令時分辨率。 另外,我知道這些時間戳只來自一個國家,所以也許可以基於此來確定「@洲/城市」。

任何POV關於如何接近這一挑戰將不勝感激,謝謝!

+0

即使沒有擴展名,PostgreSQL也能夠毫無問題地處理轉換。我嘗試了PG 9.6命令,就像這樣在時區'Europe/Berlin''上選擇'(2014-12-10T12:00:14 + 07:00'::帶時區的時間戳),並且工作正常。 PostgreSQL在時區表中標記了應用夏令時規則的時間表。所以我會先嚐試標準的方式。 – JosMac

+0

@JosMac當然,這是正確的事情。但由於我不知道這個城市,所以+ XX - >大陸/城市的關係,我需要自己翻譯,因爲DST是一個需求... – Rehhyo

回答

1

恐怕你運氣不好。沒有辦法將+07:00這樣的時間偏移自動轉換爲像US/Eastern這樣的時區。

原因是同一時間偏移量可能屬於不同的時區。例如,-05:00目前可能是America/LimaUS/Central,但這些是不同的時區–前者沒有夏令時。

因此,您必須自己提供翻譯,例如如果您知道具有某個時間偏移量的所有數據屬於哪個時區。

+0

感謝您的清理,我會嘗試去思考一些事情=) – Rehhyo