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

Quelles informations de fuseau horaire PostgreSQL stocke-t-il ?

Vos deux hypothèses sont fausses :

PostgreSQL stocke un timestamp with time zone sous la forme d'un entier de 8 octets contenant le décalage de 2000-01-01 00:00:00 UTC en microsecondes.

Ainsi, il ne stocke ni le fuseau horaire, ni la précision 1 minute.

Lors de la conversion en chaîne, l'horodatage est formaté en fonction du paramètre actuel du timezone paramètre.

Donc, si vous devez stocker le fuseau horaire séparément si vous devez vous en souvenir et utiliser le AT TIME ZONE expression pour convertir l'horodatage dans le fuseau horaire approprié.

Vous demandez des références de documentation. Une partie de cela est ici :

/*
 * Timestamp represents absolute time.
[...]
 * Timestamps, as well as the h/m/s fields of intervals, are stored as
 * int64 values with units of microseconds.  (Once upon a time they were
 * double values with units of seconds.)

Dans le même fichier, vous trouvez

/* Julian-date equivalents of Day 0 in Unix and Postgres reckoning */
#define UNIX_EPOCH_JDATE        2440588 /* == date2j(1970, 1, 1) */
#define POSTGRES_EPOCH_JDATE    2451545 /* == date2j(2000, 1, 1) */