mysql timestamp比较查询

timestamp比较查询遇到的坑

记得之前京东要求mysql建表的时候update_time 为timestamp,create_time为datetime。后来阿里的编码规范里要求两者都要是datetime类型的。

对于timestamp和datetime的区别好多地方都有介绍。有时在想为什么京东会要求update_time必须timestamp呢?难道是因为占用的空间少点?还是只有timestamp才能设置默认值(on update current_timestamp)?默认值datetime不是也可以设置么。后来百度了下,才知道 datetime支持设置默认值是在5.7的时候才支持的。京东这么要求可能之前使用的mysql版本过低,同时要求update_time 能自动更新的缘故吧。

现在在一家公司也是这么要求的 ,update_time设置为timestamp。结果遇到坑了。一同事发现很奇怪的问题:为什么date比较查询没有结果,而把日志里面打印的sql直接执行却能查询到结果??为什么会出现这种不一致的情况,我之前也没遇到过。解决问题嘛,总是让人兴奋的。

自己在本地试了下,确实是这样的,打印的日志没有问题,而正是日志‘迷惑'了我们,让人觉得很奇怪。看了下比较的字段 是 update_time, 正是timestamp类型的。经过阿里规范熏陶过,敏锐的觉得应该是类型的问题。所以自己百度了下发现是时区的问题。在数据库连接url后面加上serverTimezone=GMT%2B8 参数就行了。当然另一种方式就用datetime,这样能避免很多坑。

为什么会出现这样的问题?是因为应用服务器和mysql部署的服务器时区不一致导致的。这就是为什么我们看到的打印日志没有问题,但是却查询不到结果的原因(日志中看到的时间是本机的时区,但是当数据传输到mysql服务器时,是另一个时区的时间)

mysql 的date 也有这个问题。。。

timestamp查询范围问题

MySQL中timestamp类型日期,比如更新时间是2020-05-26,查询是时 update_time

原文来自:https://www.jb51.net/article/230225.htm

本文地址:https://www.linuxprobe.com/mysql-timestamp-query.html编辑:吴向平,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/

为您推荐一些与本文相关的文章:

  • 关于代码开源的意义所在
  • Linux 命令速查小程序
  • 混合云的未来将往何处去?
  • 在 Linux 中安装 Lighttpd Web 服务器
  • 各大公司的服务器都推荐用linux系统的原因
  • Microsoft 宣布今年底关闭开源软件托管平台 CodePlex
  • Mozilla的 Firefox Graphics 团队向社区寻求重现WebRender bug的方法
  • Linus已经确定将 Code of Conduct 行为准则应用于 Linux 内核
  • linux 系统分区 格式化及挂载磁盘
  • 通过微服务来正确实施SOA
以上是mysql timestamp比较查询的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>