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的查询效率比较
如何正确地处理时间

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值