datetime是8个字节?

来源:这里教程网 时间:2026-03-01 16:51:34 作者:

之前的印象中datetime一直是占用8个字节,从来没去关注过是否正确,在解析数据文件的时候,datetime字段后面跟了一个timestamp字段,在解析timestamp时候,总是不对,后来发现是datetime字段解析有问题。datetime字段的存储

1 bit  sign            (used when on disk)
17 bits year*13+month   (year 0-9999, month 0-12)
5 bits day             (0-31)
5 bits hour            (0-23)
6 bits minute          (0-59)
6 bits second          (0-59)
24 bits microseconds    (0-999999)
Total: 64 bits = 8 bytes

如果datetime没有microseconds部分,那么这3个字节是没有的,也就是只占用了5个字节。 测试表

master [localhost] {msandbox} (test) > show create table dba_user6\G
*************************** 1. row ***************************
       Table: dba_user6
Create Table: CREATE TABLE `dba_user6` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  `class` varchar(100) DEFAULT NULL COMMENT 'class',
  `account` int(11) DEFAULT NULL,
  `version` int(11) DEFAULT NULL,
  `ctime` datetime DEFAULT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT

所以跟开发要讲明白些,datetime没有 microseconds是5个字节,有是8个字节。 不要总是说datetime 占用空间大

相关推荐