Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySql DATETIME需要8字节而不是6字节?_Mysql_Database - Fatal编程技术网

为什么MySql DATETIME需要8字节而不是6字节?

为什么MySql DATETIME需要8字节而不是6字节?,mysql,database,Mysql,Database,MySql日期占用3个字节,时间占用3个字节,但DATETIME占用8个字节。我假设它应该是6个字节(3+3),而不是8个字节。这背后的逻辑是什么?为什么要使用额外的两个字节 根据MySQL内部,由于特定的存储需求,需要使用它: +-----------+------------------------+---------------------+ | YEAR | 1 byte, little endian | Unchanged | +-----------+

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| +-----------+------------------------+---------------------+ 特别是,
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头,则会造成混乱。