両方の仮定が間違っています:
PostgreSQLはtimestamp with time zone
を保存します 2000-01-01 00:00:00 UTC
からのオフセットを含む8バイト整数として マイクロ秒単位。
したがって、タイムゾーンも、精度1分も保存されません。
文字列に変換されると、タイムスタンプはtimezone
の現在の設定に従ってフォーマットされます。 パラメータ。
したがって、タイムゾーンを個別に保存する必要がある場合は、それを覚えてAT TIME ZONE
を使用する必要があります。 タイムスタンプを適切なタイムゾーンに変換する式。
ドキュメントの参照を求めます。その一部は、ここ :
/*
* 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.)
同じファイルに、
があります。/* 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) */