mysql中关于DateTime和Timetamp的本质区别

  • 时间的记录

关于时间的记录,可能有人会这样认为,我们只要记录年份,月份,日期,小时,分钟,秒钟这几个数字就行。但是,请思考一下时间的本质,让我们回忆一下初中隐隐约约学过的一些关于时区的地理知识。没错,同一个时间值在不同时区的所代表的含义其实是不同的。所以有可能会出现这种情况,使用东八区时间的A同学和在西7区的B同学相约某个时间电话沟通,如果不说明使用的是哪个时区的时间,那么两个人最后都觉得自己被鸽了。

  • 计算机如何解决时区不同带来的问题

计算机解决这个问题的方案是unix戳,它累计格林威治这个时区的时间1970年1月1日0点0分0秒到当前时间所经历的秒数。

  • mysql的Timestamp数据类型

mysql提供DateTime这种不带时区概念的时间类型,也提供了Timestamp这种有时区概念的时间类型。Timestamp的存储也使用的是unix时间戳,可以为mysql连接会话设置本地时间使用哪个时区,当客户端插入或更新timestamp值时,其实是根据连接会话也就是客户端的时区,再转化为unix时间戳再传送到服务端。当读取timestamp字段值时,传回来的时间根据会话的时区转化显示

  • 总结

DateTime和Timestamp之间的本质区别是Timestamp有时区的概念,使用世界标准时间作为存储,而DateTime存储只记录年月日时分秒,所以如果你的业务设计跨时区,那么应该考虑使用Timestamp,否则日后可得给自己埋坑了。但是对于Timestamp的存储大部分使用了32位,所以记录的时间只能到2038年,这也是一个问题。

 

  • 附带mysql命令

set time_zone = '-7:00';   //会话时区设为西7区,同理,东八区则为‘+8:00’

flush privileges;               //立即生效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值