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

Postgresql date_trunc dengan zona waktu menggeser zona sebesar 1 jam

Diharapkan memiliki dua varian date_trunc :satu untuk timestamp dan satu untuk timestamptz , karena dokumen mengatakan:

Jika Anda ingin lebih memahami stempel waktu dan stempel waktu, baca dulu jawaban yang bagus di sini .

Lalu tentang date_trunc . Menurut eksperimen dan interpretasi saya terhadap berbagai jawaban SO (seperti yang ini ), semuanya berperilaku seolah-olah, saat menerima stempel waktu, date_trunc pertama mengubahnya menjadi stempel waktu. Konversi ini mengembalikan stempel waktu dalam waktu lokal. Kemudian pemotongan dilakukan:simpan hanya tanggal dan jatuhkan jam/menit/detik.

Untuk menghindari konversi ini (terima kasih pozs), berikan stempel waktu (bukan stempel waktu) ke date_trunc:

date_trunc('day', TIMESTAMPTZ '2001-07-16 23:38:40Z' at time zone 'UTC')

bagian at time zone 'UTC' mengatakan "konversi stempel waktu ini menjadi stempel waktu dalam waktu UTC" (jam tidak terpengaruh oleh konversi ini). Kemudian date_trunc mengembalikan 2001-07-16 00:00:00 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parameter bernama dalam fungsi database dengan SQLAlchemy

  2. Tulis anomali Skew di Oracle dan PostgreSQL tidak mengembalikan transaksi

  3. Bagaimana cara memulai kembali penghitungan id pada tabel di PostgreSQL setelah menghapus beberapa data sebelumnya?

  4. DROP TABLE Postgresql tidak berfungsi

  5. PostgreSQL memaksa sintaks SQL standar