Cả hai giả định của bạn đều sai:
PostgreSQL lưu trữ timestamp with time zone
dưới dạng số nguyên 8 byte chứa phần bù từ 2000-01-01 00:00:00 UTC
tính bằng micro giây.
Vì vậy, nó không lưu trữ múi giờ, cũng không phải là độ chính xác 1 phút.
Khi chuyển đổi thành một chuỗi, dấu thời gian được định dạng theo cài đặt hiện tại của timezone
tham số.
Vì vậy, nếu bạn phải lưu trữ múi giờ riêng nếu bạn cần nhớ nó và sử dụng AT TIME ZONE
biểu thức để chuyển đổi dấu thời gian thành múi giờ thích hợp.
Bạn yêu cầu tài liệu tham khảo. Một phần trong số đó là tại đây :
/*
* 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.)
Trong cùng một tệp, bạn tìm thấy
/* 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) */