This is simply a misunderstanding related to a somewhat misleading type name. The time zone itself is not saved at all . It simply acts as an offset to calculate the UTC timestamp that is actually stored. All this conforms to the SQL standard.
Only a point in time is saved, no information about the zone. That is why 64 bits of information are enough. The timestamp is displayed to the client according to the setting of the current session time zone.
More details:
In addition, since John mentioned this, time with time zone defined in the SQL standard and thus implemented in Postgres, but its use is not recommended
time with time zone is defined by the SQL standard, but the definition demonstrates properties that lead to questionable utility.
This is an inherently ambiguous type that cannot handle DST properly.
source share