sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgresql date_trunc med tidszone skifter zone med 1 time

Det forventes at have to varianter af date_trunc :en for timestamp og en for timestamptz , fordi dokumentet siger:

Hvis du ønsker at forstå timestamp og timestamptz bedre, så læs først det gode svar her .

Så om date_trunc . I henhold til mine eksperimenter og fortolkning af forskellige SO-svar (som denne ), alt opfører sig som om, når man modtager en timestamptz, date_trunc konverterer det først til et tidsstempel. Denne konvertering returnerer et tidsstempel i lokal tid. Derefter udføres trunkering:behold kun datoen og slip timer/min/sekunder.

For at undgå denne konvertering (tak pozs), angiv et tidsstempel (ikke timestamptz) til date_trunc:

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

delen at time zone 'UTC' siger "konverter dette tidsstempel til et tidsstempel i UTC-tid" (timen er ikke påvirket af denne konvertering). Så returnerer date_trunc 2001-07-16 00:00:00 .




  1. Vælg første række i hver GRUPPE FOR gruppe?

  2. MySQL-grænse fra faldende rækkefølge

  3. Hvordan kontrollerer man, om der trykkes på inputtype-knappen i PHP?

  4. PostgreSQL-kodningsproblem under udførelse af forespørgsel fra kommandolinjen