为什么 postgres 使用时区的时间比使用时区的时间戳使用更多的空间?

Mat*_*lay 5 postgresql datatypes

日期/时间数据类型的文档说明timestamp with timezone需要 8 个字节,而time with timezone需要 12 个字节。它们都具有相同的分辨率(1 微秒),从表面上看,它们timestamp with timezone存储的信息更多。

谁能解释这种行为?

time with timezone由于同一页面上解释的原因,我不打算使用。

Pet*_*aut 8

time with time zone存储微秒(8 个字节)和时区(4 个字节)。 timestamp with time zone仅存储微秒并在显示时间转换时区。由于该time with time zone类型在概念上的怪异,时区需要显式存储。您实际上并不需要 8 个字节来存储一天中的微秒数,但 4 个字节是不够的。如果您真的愿意,您可能可以为 设计一种更紧凑的存储格式time with time zone,但实际上没有人关心。