MySql DATE占用3个字节,TIME占用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 | +-----------+------------------------+---------------------+
特别是,DATETIME
有8个字节:
YYYY×10000 + MM×100 + DD
HH×10000 + MM×100 + SS
因此,重要的是要意识到,输出表示和存储表示是两个非常不同的事情.如您所见,datetime的结构是两个整数,两个部分都有一些内部计算 - 日期和时间.
归档时间: |
|
查看次数: |
958 次 |
最近记录: |