在 MySQL 中存储时间既可以用 timestamp 类型,也可以用 datetime 类型,那么这二者有什么区别呢?本文就讲一下二者的区别,以便大家在开发过程中根据情况选择更合适的类型。
区别一、两者存储时间范围不同
timestamp 所能存储的时间范围为:’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’。
区别二、两者存储长度不同
5.6.4 版本之前:timestamp 存储长度为 4 个字节,datetime 存储长度为8个字节。
5.6.4 及以后版本:timestamp 存储长度为 4 个字节 + fractional seconds storage,datatime 存储长度为 5 个字节 + fractional seconds storage。
区别三、两者的存储方式不同
timestamp 值从当前时区转换为 UTC 进行存储,并从 UTC 返回到当前时区进行检索。底层存储的是时间戳数字。
datetime 存储和显示的都是格式化的时间字符串。
总结
一般情况下,尤其是需要考虑时区,那么推荐 timestamp。如果存储的时间范围很大,那么推荐 datetime。至于存储空间,新版本中二者的差距已经很小了。