PostgreSQL:为什么“时间”类型分配的大小与“时间戳”相同?

Ane*_*lou 5 postgresql

在阅读 Postgresql 数据类型,特别是“日期/时间”类型时,我注意到一些奇怪的事情(至少对我而言)。

“时间”的数据类型分配相同的存储大小(8个字节)作为“时间戳”型。虽然“时间”只负责存储时间,而“时间戳” 则存储日期时间作为时间的超集。

此外,这两种类型具有完全相同的精度(1 微秒/14 位数字),这让我质疑为什么它们都分配了 8 个字节,而“日期”类型分配了 4 个字节?

日期时间类型

是内部影响性能还是什么?

Jon*_*eet 6

一天有 86,400,000,000 微秒。这比 2 32 多,所以结果不能以 32 位存储。次佳选项是 64 位,即 8 个字节。

date涵盖 4713BC 至 5874897AD的类型进行比较,即 5879611 年。这大约是 2147483820 天,小于 2 32,因此可以存储在 32 位整数中。(实际上它小于 2 31,这可能会使各种事情稍微简单一些。)

  • 是的,这解释了它。尽管提供一种不太精确的格式来减小尺寸会有所帮助,因为大多数情况下,在 98% 的所有用例中,一秒的精度就足够了。 (2认同)