PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Date et heure en UTC - comment les stocker dans postgres ?

utiliser timestamptz il stockera votre horodatage en UTC. et l'affichera au client en fonction de ses paramètres régionaux.

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

mis à jour avec un autre bon point de Lukasz , je devais mentionner :

Ne pas le faire conduirait à la date '2017-12-31' avec l'heure '23:01:01' dans un autre fuseau horaire serait en fait non seulement une heure différente, mais une date différente avec toutes les ANNEE, MOIS et JOUR différents

une autre mise à jour Selon Laurenz remarquez, n'oubliez pas la citation de documentation ci-dessusUne valeur d'entrée qui a un fuseau horaire explicite spécifié est convertie en UTC en utilisant le décalage approprié pour ce fuseau horaire . Ce qui signifie que vous devez gérer les dates de saisie avec soin. Ex :

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)