Oba twoje założenia są błędne:
PostgreSQL przechowuje timestamp with time zone
jako 8-bajtowa liczba całkowita zawierająca przesunięcie od 2000-01-01 00:00:00 UTC
w mikrosekundach.
Nie przechowuje więc ani strefy czasowej, ani precyzji 1 minuty.
Po konwersji na ciąg znaków znacznik czasu jest formatowany zgodnie z bieżącym ustawieniem timezone
parametr.
Więc jeśli musisz przechowywać strefę czasową osobno, jeśli chcesz ją zapamiętać i użyj AT TIME ZONE
wyrażenie do konwersji znacznika czasu na właściwą strefę czasową.
Pytasz o referencje dokumentacji. Częścią tego jest tutaj :
/*
* 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.)
W tym samym pliku znajdziesz
/* 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) */