ITPub博客

首页 > 数据库 > MySQL > datetime是8个字节?

datetime是8个字节?

原创 MySQL 作者:aoerqileng 时间:2022-10-20 14:25:15 1 删除 编辑

之前的印象中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 占用空间大

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25719946/viewspace-2919360/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
二手知识受害者

注册时间:2011-11-02

  • 博文量
    68
  • 访问量
    47730