PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql date_trunc с часова зона измества зоната с 1 час

Очаква се да има два варианта на date_trunc :един за timestamp и един за timestamptz , защото документът казва:

Ако искате да разберете по-добре timestamp и timestamptz, първо прочетете чудесният отговор тук .

След това относно date_trunc . Според моите експерименти и интерпретация на различни SO отговори (като този ), всичко се държи така, сякаш при получаване на timemptz, date_trunc първо го преобразува в клеймо за време. Това преобразуване връща клеймо за време в местно време. След това се извършва отрязване:запазва се само датата и се премахват часовете/мин/секунди.

За да избегнете това преобразуване (благодаря pozs), предоставете клеймо за време (не timestamptz) на date_trunc:

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

частта at time zone 'UTC' казва „преобразувайте този timemptz в timestamp в UTC време“ (часът не се влияе от това преобразуване). Тогава date_trunc връща 2001-07-16 00:00:00 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Еволюция на отказоустойчивостта в PostgreSQL

  2. множество selectInput стойности създават неочаквано dplyr (postgres) поведение

  3. как да съхранявате сериализиран обект с пространство от имена в база данни с помощта на pdo php

  4. Получаване на дата с изместване на часовата зона

  5. Уникалното ограничение на Postgres не налага уникалност