优点
Timestamp 是按 UTC 时间进行存储。
2038 问题
MySQL 的 timestamp
类型挺好的,不过有个严重的 2038 问题,我不知道到时候这个类型会如何处理。
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
(1 << 31) / (3600 * 24 * 365)
根据时间范围,这应该是用的一个有符号的 32 位整型数实现的,为什么不用无符号数呢,不是又可以往后续 68 年么?
我预测,MySQL 的某一个新版本,将会增加一个 TIMESTAMP64
类型,采用 64 位有符号整形数存时间戳。
或直接将 TIMESTAMP
拓展到 64 位,先支持配置和命令行参数开启这个特性,然后后续版本将其视作默认设置。
参考资料与拓展阅读
- MySQL 文档 (v5.7), 11.2.2 The DATE, DATETIME, and TIMESTAMP Types