PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kembalikan Daftar Zona Waktu yang Didukung oleh PostgreSQL

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 dari CURRENT_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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django memodelkan satu kunci asing ke banyak tabel

  2. hibernate tidak bisa mendapatkan nilai urutan berikutnya

  3. psycopg2 sebenarnya tidak memasukkan data

  4. kesalahan aplikasi uji django - Mendapat kesalahan saat membuat basis data uji:izin ditolak untuk membuat basis data

  5. Cara Menggabungkan String di PostgreSQL