A documentação sobre tipos de dados de data/hora afirma que timestamp with timezone
leva 8 bytes, enquanto time with timezone
leva 12 bytes. Ambos têm a mesma resolução (1 microssegundo) e aparentemente timestamp with timezone
armazenam mais informações.
Alguém pode explicar esse comportamento?
Não pretendo usar time with timezone
pelos motivos explicados na mesma página.
time with time zone
armazena microssegundos (8 bytes) e o fuso horário (4 bytes).timestamp with time zone
armazena apenas os microssegundos e converte o fuso horário no horário de exibição. Devido à estranheza conceitual dotime with time zone
tipo, o fuso horário precisa ser armazenado explicitamente. Na verdade, você não precisa de 8 bytes para armazenar o número de microssegundos em um dia, mas 4 bytes não seriam suficientes. Se você realmente quisesse, provavelmente poderia criar um formato de armazenamento mais compacto paratime with time zone
, mas na prática ninguém se importa.