MySQL中存储时间常用的类型为datetime 和 timestamp ,另外还可以用int类型存储时间戳。
不过本次主要对比datetime和timestamp。
那么datetime,timestamp之间可以通过哪些维度对比呢?
- 时区影响
timestamp会跟随设置的时区变化而变化,而datetime保存的值是不会变化的。
如果数据库时区设置变化,timestamp会随之变化,datetime则不会。 - 占用存储空间不同
timestamp储存占用4个字节,datetime储存占用8个字节 - 可表示的时间范围不同
timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07
,datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
现在都2019年了,timestamp确实有可能会受到可表示范围影响。另外如果业务中用到了2038以后的时间,也暂时只能选择datetime或者timestamp了。 - 索引速度不同
timestamp更轻量,索引相对datetime更快。