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

Nilai offset zona waktu server

Untuk zona waktu Anda dapat:

SHOW timezone;

atau yang setara:

SELECT current_setting('TIMEZONE');

tetapi ini dapat dalam format apa pun yang diterima oleh server, sehingga dapat mengembalikan UTC , 08:00 , Australia/Victoria , atau serupa.

Dengan frustrasi, tampaknya tidak ada fungsi bawaan untuk melaporkan offset waktu dari UTC yang digunakan klien dalam jam dan menit, yang tampaknya agak gila bagi saya. Anda bisa mendapatkan offset dengan membandingkan waktu saat ini di UTC dengan waktu saat ini secara lokal:

SELECT age(current_timestamp AT TIME ZONE 'UTC', current_timestamp)`

... tapi IMO lebih bersih untuk mengekstrak offset tz dalam hitungan detik dari current_timestamp dan konversikan ke interval:

SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');

Itu akan cocok dengan hasil yang diinginkan kecuali tidak menghasilkan nol di depan, jadi -05:00 hanya -5:00 . Mengganggu tampaknya tidak mungkin untuk mendapatkan to_char untuk menghasilkan nol di depan selama berjam-jam, meninggalkan saya dengan pemformatan manual jelek berikut:

CREATE OR REPLACE FUNCTION oracle_style_tz() RETURNS text AS $$
SELECT to_char(extract(timezone_hour FROM current_timestamp),'FM00')||':'||
       to_char(extract(timezone_minute FROM current_timestamp),'FM00');
$$ LANGUAGE 'SQL' STABLE;

Kredit ke Glenn untuk timezone_hour dan timezone_minute alih-alih peretasan yang saya gunakan sebelumnya dengan extract(timezone from current_timestamp) * INTERVAL '1' second) dan CTE.

Jika Anda tidak memerlukan nol di depan, Anda dapat menggunakan:

CREATE OR REPLACE FUNCTION oracle_style_tz() RETURNS text AS $$
SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');
$$ LANGUAGE 'SQL' STABLE;

Lihat juga:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah Alembic Autogenerate mengubah kolom?

  2. Menggunakan MS Access &ODBC untuk terhubung ke PostgreSQL jarak jauh

  3. PostgreSQL - Kolom alias dan HAVING

  4. Rails Postgres - Kueri Kolom Jsonb

  5. KESALAHAN:hapus di atas meja melanggar batasan kunci asing. ID kunci masih direferensikan dari tabel (banyak)