为什么日期时间在数据存储中占8bytes,如MySQL,c#

Why date time takes up 8bytes in data storage, such as MySQL, c#

如题,为什么日期时间占8字节,日期占3字节,时间占3字节?

时间需要 3 加上小数秒的可变数量。 MySQL 日期时间现在占用 5 个字节,加上相同的可变数量。

date/time 字段的实际 storage requirements 取决于两件事:

  • 代表。这通常是自 以来的
  • 存储结构限制,即我们可能需要使用字节的倍数来存储数据(即我们不能轻易地使用 2.36 字节来存储一些东西...)

关于 MySQL date,范围是“1000-01-01”到“9999-12-31”,或 9000 年(长短不一),我​​们需要一天的粒度。所以我们需要存储从纪元 (1000-01-01) 到 9000*365 = 3285000 的天数。由于数字是 0-3285000,我们不能使用 2 个字节(最大 65536),我们使用 3 (最大 16777216)。是的,这超出了我们的需要,但我们不能有小数字节。

关于MySQL time,范围是'-838:59:59'到'838:59:59'(可以用来表示duration/interval,而不仅仅是一天中的时间) 大约是 6040800 秒。同样,我们需要 3 个字节来容纳它。

关于MySQL datetime,范围是'1000-01-01 00:00:00.000000'到'9999-12-31 23:59:59.999999'。这里的精度有很大的不同,它现在可以以 0.000001 秒的粒度容纳 9000 年!这就是为什么我们需要 8 个字节来存储日期时间。