mysql timestamp比较查询遇到的坑及解决


Posted in MySQL onNovember 27, 2021

timestamp比较查询遇到的坑

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

mysql timestamp比较查询遇到的坑及解决

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

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

mysql timestamp比较查询遇到的坑及解决

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

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

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

timestamp查询范围问题

MySQL中timestamp类型日期,比如更新时间是2020-05-26,查询是时 update_time <= 2020-05-26,是查询不到的,需要转为 DATE_FORMAT(info.up_time,'%Y-%m-%d') <= '2020-05-26',具体原因不明,需要深入研究。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL锁机制
Apr 05 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
mysql全面解析json/数组
Jul 07 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 #MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 #MySQL
MySQL Innodb索引机制详细介绍
Nov 23 #MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 #MySQL
MySQL数据库索引的最左匹配原则
Nov 20 #MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 #MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 #MySQL
You might like
Zend的MVC机制使用分析(一)
2013/05/02 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
jquery延迟对象解析
2016/10/26 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python找出因数与质因数的方法
2019/07/25 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
计算机相关的自我评价
2014/01/15 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
个人年终总结范文
2015/03/09 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
公历12个月名称的由来
2022/04/12 杂记
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS