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查询语句的执行过程
May 07 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
带你学习MySQL执行计划
May 31 MySQL
Mysql排序的特性详情
Nov 01 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 MySQL
MySQL提取JSON字段数据实现查询
Apr 22 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL自定义函数及触发器
Aug 05 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
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
python连接字符串的方法小结
2015/07/13 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
python爬取微信公众号文章
2018/08/31 Python
python实现机器学习之元线性回归
2018/09/06 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
超简单的Python HTTP服务
2019/07/22 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python为什么会环境变量设置不成功
2020/06/23 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
专升本个人自我评价
2013/12/22 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
重阳节简报
2015/07/20 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL