Kedua asumsi Anda salah:
PostgreSQL menyimpan timestamp with time zone
sebagai bilangan bulat 8-byte yang berisi offset dari 2000-01-01 00:00:00 UTC
dalam mikrodetik.
Jadi itu tidak menyimpan zona waktu, juga tidak presisi 1 menit.
Setelah konversi ke string, stempel waktu diformat sesuai dengan pengaturan timezone
saat ini parameter.
Jadi jika Anda harus menyimpan zona waktu secara terpisah jika Anda perlu mengingatnya dan gunakan AT TIME ZONE
ekspresi untuk mengonversi stempel waktu ke zona waktu yang tepat.
Anda meminta referensi dokumentasi. Bagian dari itu adalah di sini :
/*
* 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.)
Dalam file yang sama, Anda menemukan
/* 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) */