Saat bekerja dengan PostgreSQL, Anda mungkin terkadang menemukan diri Anda dalam situasi di mana Anda memerlukan daftar zona waktu yang dikenali Postgres.
Misalnya, Anda dapat mencoba menyetel zona waktu untuk sesi Anda saat ini, atau Anda dapat menggunakan salah satu fungsi datetime yang memungkinkan Anda untuk memanipulasi zona waktu.
Di bawah ini adalah dua tampilan dan dua fungsi yang mengembalikan daftar zona waktu.
Tampilan pg_timezone_abbrevs
pg_timezone_abbrevs
view menyediakan daftar singkatan zona waktu yang saat ini dikenali oleh fungsi datetime.
Berikut tampilan 10 baris teratas:
SELECT *
FROM pg_timezone_abbrevs
LIMIT 10;
Hasil:
abbrev | utc_offset | is_dst --------+------------+-------- ACDT | 10:30:00 | t ACSST | 10:30:00 | t ACST | 09:30:00 | f ACT | -05:00:00 | f ACWST | 08:45:00 | f ADT | -03:00:00 | t AEDT | 11:00:00 | t AESST | 11:00:00 | t AEST | 10:00:00 | f AFT | 04:30:00 | f
is_dst
kolom menunjukkan apakah ini adalah singkatan musim panas atau bukan.
Perhatikan bahwa konten tampilan ini berubah ketika timezone_abbreviations
parameter run-time diubah.
Perhatikan juga bahwa dokumentasi Postgres menyatakan:
Sementara sebagian besar singkatan zona waktu mewakili offset tetap dari UTC, ada beberapa yang secara historis bervariasi nilainya (lihat Bagian B.4 untuk informasi lebih lanjut). Dalam kasus seperti itu, pandangan ini menyajikan maknanya saat ini.
Fungsi pg_timezone_abbrevs()
Sebagai alternatif, Anda dapat menggunakan pg_timezone_abbrevs()
berfungsi untuk mengembalikan hasil sebagai SETOF.
SELECT pg_timezone_abbrevs()
LIMIT 10;
Hasil:
pg_timezone_abbrevs ------------------- (ACDT,10:30:00,t) (ACSST,10:30:00,t) (ACST,09:30:00,f) (ACT,-05:00:00,f) (ACWST,08:45:00,f) (ADT,-03:00:00,t) (AEDT,11:00:00,t) (AESST,11:00:00,t) (AEST,10:00:00,f) (AFT,04:30:00,f)
Anda juga dapat menggunakan sintaks berikut untuk mengembalikan hasil dalam kolom terpisah jika diperlukan.
SELECT *
FROM pg_timezone_abbrevs()
LIMIT 10;
Hasil:
abbrev | utc_offset | is_dst --------+------------+-------- ACDT | 10:30:00 | t ACSST | 10:30:00 | t ACST | 09:30:00 | f ACT | -05:00:00 | f ACWST | 08:45:00 | f ADT | -03:00:00 | t AEDT | 11:00:00 | t AESST | 11:00:00 | t AEST | 10:00:00 | f AFT | 04:30:00 | f
Tampilan pg_timezone_names
pg_timezone_names
view menyediakan daftar nama zona waktu yang dikenali oleh SET TIMEZONE
, bersama dengan singkatan terkait, offset UTC, dan status musim panas.
Berikut tampilan 10 baris teratas:
SELECT *
FROM pg_timezone_names
LIMIT 10;
Hasil:
name | abbrev | utc_offset | is_dst ------------------+--------+------------+-------- Indian/Mauritius | +04 | 04:00:00 | f Indian/Chagos | +06 | 06:00:00 | f Indian/Mayotte | EAT | 03:00:00 | f Indian/Christmas | +07 | 07:00:00 | f Indian/Cocos | +0630 | 06:30:00 | f Indian/Maldives | +05 | 05:00:00 | f Indian/Comoro | EAT | 03:00:00 | f Indian/Reunion | +04 | 04:00:00 | f Indian/Mahe | +04 | 04:00:00 | f Indian/Kerguelen | +05 | 05:00:00 | f
is_dst
kolom menunjukkan apakah zona waktu sedang mengamati musim panas atau tidak.
Untuk tampilan ini, dokumentasi Postgres menyatakan:
Berbeda dengan singkatan yang ditampilkan di
pg_timezone_abbrevs
, banyak dari nama ini menyiratkan serangkaian aturan tanggal transisi waktu musim panas. Oleh karena itu, informasi terkait berubah melintasi batas DST lokal. Informasi yang ditampilkan dihitung berdasarkan nilai saat ini dariCURRENT_TIMESTAMP
.
Fungsi pg_timezone_names()
Anda juga dapat menggunakan pg_timezone_names()
berfungsi untuk mengembalikan hasil sebagai SETOF.
SELECT pg_timezone_names()
LIMIT 10;
Hasil:
pg_timezone_names --------------------------------- (Indian/Mauritius,+04,04:00:00,f) (Indian/Chagos,+06,06:00:00,f) (Indian/Mayotte,EAT,03:00:00,f) (Indian/Christmas,+07,07:00:00,f) (Indian/Cocos,+0630,06:30:00,f) (Indian/Maldives,+05,05:00:00,f) (Indian/Comoro,EAT,03:00:00,f) (Indian/Reunion,+04,04:00:00,f) (Indian/Mahe,+04,04:00:00,f) (Indian/Kerguelen,+05,05:00:00,f)
Anda juga dapat menggunakan sintaks berikut untuk mengembalikan hasil dalam kolom terpisah.
SELECT * FROM pg_timezone_names()
LIMIT 10;
Hasil:
name | abbrev | utc_offset | is_dst ------------------+--------+------------+-------- Indian/Mauritius | +04 | 04:00:00 | f Indian/Chagos | +06 | 06:00:00 | f Indian/Mayotte | EAT | 03:00:00 | f Indian/Christmas | +07 | 07:00:00 | f Indian/Cocos | +0630 | 06:30:00 | f Indian/Maldives | +05 | 05:00:00 | f Indian/Comoro | EAT | 03:00:00 | f Indian/Reunion | +04 | 04:00:00 | f Indian/Mahe | +04 | 04:00:00 | f Indian/Kerguelen | +05 | 05:00:00 | f