MySQL存时间,到底该用timestamp还是datetime?那种用的多啊
MySQL存时间,到底该用timestamp还是datetime?之前我都是用的timestamp,新来的队友建表字段都用的datetime。我有点怀疑自己了!
如果你需要考虑时区,就推荐 timestamp ,如果不需要,就可以 datetime 。
再补充一个 timestamp 的优势
ON UPDATE CURRENT_TIMESTAMP
、DEFAULT CURRENT_TIMESTAMP
,分别表示在 更新和插入是更新这个字段的时间。另外,不要被
timestamp
这个类型名字给骗了,虽然类型叫timestamp
,实际上是指底层存储是使用的timestamp
(数字),实际上大部分 MySQL 客户端读取出来也是按照格式化时间字符串显示的,也是比较可读的。另外需要注意的是,在插入的时候,也是按照格式化时间字符串插入的,而不是插入一个时间戳。
补充一个 datetime 的优势
timestamp 因为是使用的时间戳,所以时间范围是 1970 ~ 2038,如果你需要的时间范围不在这个范围内,那最好采用 datetime。
2038 问题,大可不必担心。如果你需要存储未来的时间(超过 2038),可能需要 datetime另外很多文章会告诉你, datetime 的存储长度是 8 ,timestamp 是 4 ,实际上在 5.6.4 版本以后,他们的差距就小了。
