PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Quali informazioni sul fuso orario memorizza PostgreSQL?

Entrambe le tue ipotesi sono sbagliate:

PostgreSQL memorizza un timestamp with time zone come numero intero a 8 byte che contiene l'offset da 2000-01-01 00:00:00 UTC in microsecondi.

Quindi non memorizza né il fuso orario, né la precisione 1 minuto.

Dopo la conversione in una stringa, il timestamp viene formattato in base all'impostazione corrente del timezone parametro.

Quindi se devi memorizzare il fuso orario separatamente se hai bisogno di ricordarlo e usa il AT TIME ZONE espressione per convertire il timestamp nel fuso orario corretto.

Chiedi i riferimenti della documentazione. Parte di questo è qui :

/*
 * 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.)

Nello stesso file trovi

/* 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) */