sql >> Database >  >> RDS >> PostgreSQL

Postgresql date_trunc met tijdzone verschuift zone met 1 uur

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 .




  1. Is er een manier voor PHP om een ​​SQL-syntaxis te valideren zonder deze uit te voeren?

  2. Kan geen mysql-gegevens ophalen (CodeIgniter selecteren)

  3. Rails 3 Query:krijg foutmelding bij gebruik van 'select' met 'order'

  4. zoombestand uploaden naar postgres bytea kolom kolom is bytea maar expressie is van het type bigint