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

Data i czas w UTC - jak je przechowywać w postgresie?

użyj timestamptz będzie przechowywać Twój znacznik czasu w UTC. i wyświetli go klientowi zgodnie z jego lokalizacją.

https://www.postgresql.org/docs/current/static /datatype-datetime.html

zaktualizowane z kolejnym dobrym punktem od Łukasza , musiałem wspomnieć:

Nie zrobienie tego doprowadziłoby do daty '2017-12-31' z czasem '23:01:01' w innej strefie czasowej w rzeczywistości byłaby nie tylko inną godziną, ale inną datą ze wszystkimi ROKAMI, MIESIĄCAMI i DZIEŃMI

kolejna aktualizacja Zgodnie z Laurenzem zauważ, nie zapomnij o cytacie z dokumentówWartość wejściowa, która ma określoną strefę czasową, jest konwertowana na UTC przy użyciu odpowiedniego przesunięcia dla tej strefy czasowej . Oznacza to, że musisz ostrożnie zarządzać datami wprowadzania danych. Np.:

t=# create table t(t timestamptz);
CREATE TABLE
t=# set timezone to 'GMT+5';
SET
t=# insert into t select '2017-01-01 00:00:00';
INSERT 0 1
t=# insert into t select '2017-01-01 00:00:00' at time zone 'UTC';
INSERT 0 1
t=# insert into t select '2017-01-01 00:00:00+02';
INSERT 0 1
t=# select * from t;
           t
------------------------
 2017-01-01 00:00:00-05
 2017-01-01 05:00:00-05
 2016-12-31 17:00:00-05
(3 rows)



  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 - wyłączanie ograniczeń

  2. PSQLException:Zestaw wyników nie jest prawidłowo ustawiony, być może trzeba wywołać następny

  3. Błąd SQL podczas próby utworzenia nowego wyzwalacza

  4. PostgreSQL - Przypisz wartość całkowitą do ciągu w instrukcji case

  5. Wybieranie danych do tablicy Postgres