PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql date_trunc z przesunięciem strefy czasowej o 1 godzinę

Oczekuje się, że będzie miał dwa warianty date_trunc :jeden dla timestamp i jeden dla timestamptz , ponieważ dokument mówi:

Jeśli chcesz lepiej zrozumieć znacznik czasu i znacznik czasu, najpierw przeczytaj świetna odpowiedź tutaj .

Następnie o date_trunc . Zgodnie z moimi eksperymentami i interpretacją różnych odpowiedzi SO (takich jak ta ), wszystko zachowuje się tak, jakby po otrzymaniu znacznika czasu date_trunc najpierw konwertuje go na znacznik czasu. Ta konwersja zwraca znacznik czasu w czasie lokalnym. Następnie wykonywane jest skrócenie:zachowaj tylko datę i upuść godziny/min/sekundy.

Aby uniknąć tej konwersji (dzięki pozs), podaj znacznik czasu (nie znacznik czasu) do date_trunc:

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

część at time zone 'UTC' mówi „przekonwertuj ten znacznik czasu na znacznik czasu w czasie UTC” (konwersja nie ma wpływu na godzinę). Następnie date_trunc zwraca 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. Jak zaktualizować tablicę w PostgreSQL

  2. Jak w jednej akcji sklonować testową bazę danych z produkcyjnej?

  3. Uruchom zapytanie z LIMIT/OFFSET, a także uzyskaj całkowitą liczbę wierszy

  4. Wybierz odblokowany wiersz w Postgresql

  5. Apache Spark:połączenie JDBC nie działa