Sayangnya PostgreSQL tidak menawarkan tipe data zona waktu, jadi Anda mungkin harus menggunakan text
.
interval
sepertinya opsi logis pada pandangan pertama, dan itu adalah sesuai untuk beberapa kegunaan. Namun, gagal untuk mempertimbangkan waktu musim panas, juga tidak mempertimbangkan fakta bahwa wilayah yang berbeda dalam offset UTC yang sama memiliki aturan DST yang berbeda.
Tidak ada pemetaan 1:1 dari offset UTC kembali ke zona waktu.
Misalnya, zona waktu untuk Australia/Sydney
(New South Wales) adalah UTC+10
(EST
), atau UTC+11
(EDT
) selama waktu musim panas. Ya, itu singkatan yang sama EST
yang digunakan AS; akronim zona waktu tidak unik dalam basis data tzdata, itulah sebabnya Pg memiliki timezone_abbreviations
pengaturan. Lebih buruk lagi, Brisbane (Queensland) berada pada garis bujur yang hampir sama dan berada di UTC+10 EST
... tetapi tidak memiliki penghematan waktu siang hari, jadi terkadang di -1
offset ke New South Wales selama DST NSW.
(Perbarui :Baru-baru ini Australia mengadopsi A
awalan, jadi menggunakan AEST
sebagai akronim TZ negara bagian timur, tetapi EST
dan WST
tetap digunakan secara umum).
Sangat membingungkan?
Jika Anda hanya perlu menyimpan offset UTC lalu interval
sesuai. Jika Anda ingin menyimpan zona waktu , simpan sebagai text
. Sulit untuk memvalidasi dan mengonversi ke offset zona waktu saat ini, tetapi setidaknya itu mengatasi DST.