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

PostgreSQL:memilih baris yang muncul pada hari tertentu dalam seminggu, di zona waktu tertentu

AT TIME ZONE ketika diterapkan ke timestamp without timezone menghasilkan timestamp with timezone (dan sebaliknya). Dan timestamp with timezone ditafsirkan dalam zona waktu sesi Anda (yang dalam kasus Anda dipaksa untuk UTC ).

Jadi ekspresi EXTRACT (dow from time at time zone 'Brisbane/Australia') tidak mengekstrak hari di Brisbane pada time (UTC) , ia mengekstrak hari yang sesuai dengan time . yang dikonversi dari sudut pandang seseorang yang secara virtual tinggal di zona waktu UTC.

Sebagai contoh, ketika saya mengetik ini, jika berpura-pura dalam UTC:

=> set timezone to 'UTC';
=> select now(),now() at time zone 'Australia/Brisbane';
             now              |         timezone          
------------------------------+---------------------------
 2013-10-27 18:01:03.15286+00 | 2013-10-28 04:01:03.15286

Oke, ini hari Minggu 18:01 di UTC dan Senin 04:01 di Brisbane

Tetapi jika menerapkan perpindahan zona waktu ke timestamp without timezone :

select now(),now()::timestamp at time zone 'Australia/Brisbane';
              now              |           timezone            
-------------------------------+-------------------------------
 2013-10-27 18:01:57.878541+00 | 2013-10-27 08:01:57.878541+00

Perhatikan bagaimana kolom kedua berbeda dari hasil sebelumnya. Ini sebenarnya 20 jam dari Brisbane yang dinyatakan dalam UTC:ini mungkin jawaban yang benar secara teknis untuk pertanyaan yang tidak masuk akal.

Mungkin Anda menginginkan ini:

EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0

yang harus menjawab:apakah tanggal dan waktu time yang diukur dalam UTC sama dengan hari Minggu di Brisbane?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Izin PostgreSQL terbatas untuk aplikasi web

  2. Pencadangan &Pemulihan PostgreSQL 9.0

  3. Jenis JOIN apa yang digunakan

  4. MAX() Fungsi di PostgreSQL

  5. Bagaimana cara mendapatkan waktu nyata dalam transaksi PostgreSQL?