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
.