为什么MySql DATETIME需要8字节而不是6字节?
MySql日期占用3个字节,时间占用3个字节,但DATETIME占用8个字节。我假设它应该是6个字节(3+3),而不是8个字节。这背后的逻辑是什么?为什么要使用额外的两个字节 根据MySQL内部,由于特定的存储需求,需要使用它: +-----------+------------------------+---------------------+ | YEAR | 1 byte, little endian | Unchanged | +-----------+------------------------+---------------------+ | DATE | 3 bytes, little endian | Unchanged | +-----------+------------------------+---------------------+ | | | 3 bytes + | | TIME | 3 bytes, little endian | fractional-seconds | | | | storage, big endian | +-----------+------------------------+---------------------+ | | | 4 bytes + | | TIMESTAMP | 4 bytes, little endian | fractional-seconds | | | | storage, big endian | +-----------+------------------------+---------------------+ | | | 5 bytes + | | DATETIME | 8 bytes, little endian | fractional-seconds | | | | storage, big endian | +-----------+------------------------+---------------------+ +-----------+------------------------+---------------------+ |年份| 1字节,小尾端|不变| +-----------+------------------------+---------------------+ |日期| 3字节,小尾端|未更改| +-----------+------------------------+---------------------+ || | 3字节+| |时间| 3字节,小尾端|小数秒| || |存储,big endian| +-----------+------------------------+---------------------+ || | 4字节+| |时间戳| 4字节,小尾端|小数秒| || |存储,big endian| +-----------+------------------------+---------------------+ || | 5字节+| |DATETIME | 8字节,小尾端|小数秒| || |存储,big endian| +-----------+------------------------+---------------------+ 特别是,为什么MySql DATETIME需要8字节而不是6字节?,mysql,database,Mysql,Database,MySql日期占用3个字节,时间占用3个字节,但DATETIME占用8个字节。我假设它应该是6个字节(3+3),而不是8个字节。这背后的逻辑是什么?为什么要使用额外的两个字节 根据MySQL内部,由于特定的存储需求,需要使用它: +-----------+------------------------+---------------------+ | YEAR | 1 byte, little endian | Unchanged | +-----------+
DATETIME
有8个字节:
- 4字节:日期的整数,表示为
YYYY×10000+MM×100+DD
- 4字节:表示时间的整数,表示为
HH×10000+MM×100+SS
因此,必须认识到,输出表示和存储表示是两件截然不同的事情。如您所见,datetime的结构是两个整数,其中包含日期和时间这两部分的一些内部计算。可能是日期和时间之间的空格?有关mysql数据类型表示的详细信息,请参阅。如果复制此表时没有before-mysql-5.6.4和after-mysql-5.6.4头,则会造成混乱。