千家信息网

记录总结,MySQL中的时间字段的几种数据类型比较

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,序言以前脑海里就一念头总以为啥时间都用int存储,最近在项目开发时,频繁见到datetime类型,对于MySQL数据库中的有关时间的字段该选用何种类型,引发了一些争论。所以做了一些简单的研究,看了一些
千家信息网最后更新 2026年10月31日记录总结,MySQL中的时间字段的几种数据类型比较

序言

以前脑海里就一念头总以为啥时间都用int存储,最近在项目开发时,频繁见到datetime类型,对于MySQL数据库中的有关时间的字段该选用何种类型,引发了一些争论。所以做了一些简单的研究,看了一些blog和官方文档。最后做出一个自己的总结。

类型比较

int

INT类型一般用于存储Unix时间戳。使用一个简单的 INT 列保存 Unix 时间是最普通的方法。使用 INT,你可以确保你要保存的数字可以快速、可靠地插入到表中。

  • 占用4个字节
  • 建立索引之后,查询速度快
  • 条件范围搜索可以使用使用between
  • 不能使用MySQL提供的时间函数

如果只是存储 Unix 时间戳(并且在它的合法日期范围内),而且不打算在它上面使用任何基于日期的查询,我觉得使用 INT 是可以的。它执行简单数值比较查询时非常快,因为只是在处理简单的数字。

结论:适合需要进行大量时间范围查询的数据表,不支持在此字段上进行MySQL时间函数的运算,比如from_unixtime

TIMESTAMP和DATETIME

Datetime 和 Timestamp 都保存日期和时间信息,同时,使用人类可读的日期形式,如 "2018-01-01"。

TIMESTAMP: A four-byte integer representing seconds UTC since the epoch ('1970-01-01 00:00:00' UTC)

TIMESTAMP:一个四字节的整数,从1970-01-01 00:00:00开始算起。

Timestamp 和 Datetime 的核心不同点主要在于 MySQL在内部如何表示这些信息:两种都以二进制而非字符串形式存储,但在表示日期/时间部分时 Timestamp (4 字节) 比 Datetime (5字节,从MySQL 5.6.4版本起,之前为8个字节) 少使用 1 字节。当保存毫秒部分时两种都使用额外的空间 (1到3 字节)。

非分数部分的DATETIME编码(5.6.4版本之后):

1 bit sign (1= non-negative, 0= negative)
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)

40 bits = 5 bytes

Timestamp 节省的 1 字节是有代价的:你只能存储从 '1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999' 之间的时间。而 Datetime 允许你存储从 '1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999' 之间的任何时间。

另一个重要的差别是MySQL使用服务器的时区转换Timestamp值到它的 UTC 等价值再保存。当获取值是它会再次进行时区转换,所以你得回了你"原始的"日期/时间值。Datetime 列不会被数据库改变。无论时区怎样配置,每次都会保存和获取到同样的值。

在5.6版本之后,datetime开始可以使用current time作为默认值,所以不再有timestamp比datetime更适合作为需要随插入和更新来变更时间的类型的说法。

结论:Datetime 是大多数场景下的最佳选择,理由是

  • 无需任何转换即是人类可读的。
  • 不会因为时区变换产生问题。
  • 只比它的对手们多用 1 字节
  • 支持更大的日期范围(从 1000 年到 9999 年)

总结

没有完美的数据类型,只要最合适的数据类型。这么多类型同时存在一定是有其道理的,了解清楚了不同类型的差异,就能选择最合适的类型。

参考:

  1. 解析MySQL中存储时间日期类型的选择问题
  2. Date and Time Data Type Representation
  3. MySQL中你应该使用什么数据类型表示时间?
  4. MySQL中的时间字段的几种数据类型比较
时间 类型 字节 日期 数据 存储 时区 范围 查询 字段 版本 部分 选择 不同 合适 之间 人类 信息 函数 只是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 互联网科技保险 互联网科技有限公司图片 上海亿帐通互联网科技 广西拼得多互联网科技有限公司 安控科技rtu产品工业互联网 玖二柒互联网科技公司待遇 中盈科技互联网信息有限公司 创业天下互联网科技有限公司 央行互联网金融科技公司 企晟互联网信息科技有限公司 阿里互联网科技企业 威龙国际互联网科技公司 山东子淼互联网科技有限公司 伍佰万互联网科技怎么赚钱 云鲸互联网络科技有限公司 三亚科技创新互联网基地 平安好医生打造互联网科技医疗 互联网科技创业有什么好项目 高科技和互联网的现代国家 互联网是不是新科技 广西互联网科技公司 伴你行互联网科技有限公司 狮子座互联网科技培训 荆州市昕露互联网络科技有限公司 苏州五指互联网络科技有限 互联网5g黑科技有哪些 卡尔迅互联网科技有限公司 第三届互联网大会安防黑科技 科技美学互联网 艺术
0