timetz stores only the time units within a day, it uses an extra field to store the zone info. typedef int64 TimeADT; typedef struct { TimeADT time; /* all time units other than months and years */ int32 zone; /* numeric time zone, in seconds */ } TimeTzADT; timestamp is a count that starts on January 1st, 1970 at UTC. You can convert a timestamp to any timezone, but not timetz. On Mon, Jun 19, 2023 at 11:53 AM jian he <jian.universality@xxxxxxxxx> wrote: > > > Hi, > https://www.postgresql.org/docs/current/datatype-datetime.html > timetz, timestamptz: > same resolution. > fractional digits in the seconds field are also the same. > > > > All timezone-aware dates and times are stored internally in UTC. They are converted to local time in the zone specified by the TimeZone configuration parameter before being displayed to the client. > > Why does timetz need more bytes (8 vs 12) than timestamptz? -- Regards Junwang Zhao