首页 » Web前端 » phpmysqltimestamp比拟技巧_mysql timestamp比较查询

phpmysqltimestamp比拟技巧_mysql timestamp比较查询

访客 2024-12-17 0

扫一扫用手机浏览

文章目录 [+]

timestamp比较查询碰着的坑

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

phpmysqltimestamp比拟技巧_mysql timestamp比较查询

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

phpmysqltimestamp比拟技巧_mysql timestamp比较查询
(图片来自网络侵删)

现在在一家公司也是这么哀求的 ,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 <= 2020-05-26,是查询不到的,须要转为 DATE_FORMAT(info.up_time,'%Y-%m-%d') <= '2020-05-26',详细缘故原由不明,须要深入研究。

mysql timestamp比较查询 | 《Linux就该这么学》 (linuxprobe.com)

相关文章