datatime
-
datatime 占8个字节 范围为
1000-01-01 00:00:00
~
9999-12-31 23:59:59
- 和时区无关,原样存入、原样读取。
- datetime 适合 记录固定时间如服务器执行计划任务时间 / 健身锻炼计划时间等,在任何时区都是需要一个固定的时间要做某个事情。超出 timestamp 的时间,如果需要时区必须记得时区处理
timestamp
-
timestamp 占4个字节 范围为
1970-01-01 08:00:01
~
2038-01-19 11:14:07
- 和时区密切相关,存储和使用时都会进行时区转换。
- timestamp 类型在默认情况下,insert、update 数据时,TIMESTAMP列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。
- timestamp 适合 记录经常变化的更新 / 创建 / 发布 / 日志时间 / 购买时间 / 登录时间 / 注册时间等,并且是近来的时间,够用,时区自动处理,比如说做海外购或者业务可能拓展到海外
bigint
- 自己维护一个时间戳,查询效率高,不过数据写入,显示都需要做转换
小结
在InnoDB存储引擎下,通过时间排序,性能bigint > timestamp > datetime
如果需要对时间字段进行操作(如通过时间范围查找或者排序等),推荐使用bigint,如果时间字段不需要进行任何操作,推荐使用timestamp,使用4个字节保存比较节省空间,但是只能记录到2038年记录的时间有限
参考:
选择合适的 MySQL 日期时间类型来存储你的时间
mysql数据库时间类型datetime、bigint、timestamp的查询效率比较
如何正确地处理时间
版权声明:本文为u010020726原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。