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 .