Mysql 日期的正确存储方式

  • Post author:
  • Post category:mysql




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 版权协议,转载请附上原文出处链接和本声明。