Er wordt verwacht dat er twee varianten van date_trunc
. zullen zijn :één voor timestamp
en één voor timestamptz
, omdat het document
zegt:
Als je timestamp en timestamptz beter wilt begrijpen, lees dan eerst het geweldige antwoord hier .
Dan over date_trunc
. Volgens mijn experimenten en interpretatie van verschillende SO-antwoorden (zoals deze
), alles gedraagt zich alsof, bij het ontvangen van een timestamptz, date_trunc
converteert het eerst naar een tijdstempel. Deze conversie retourneert een tijdstempel in lokale tijd. Daarna wordt er afgekapt:bewaar alleen de datum en laat de uren/min/seconden vallen.
Om deze conversie te voorkomen (bedankt pozs), geeft u een tijdstempel (geen timestamptz) op naar date_trunc:
date_trunc('day', TIMESTAMPTZ '2001-07-16 23:38:40Z' at time zone 'UTC')
het deel at time zone 'UTC'
zegt "converteer deze tijdstempel naar een tijdstempel in UTC-tijd" (het uur wordt niet beïnvloed door deze conversie). Dan retourneert date_trunc 2001-07-16 00:00:00
.