MySQL时区问题

今天遇到一个很奇怪的问题,在代码里面通过MyBatis 能查询到今天的数据,但是将打印的SQL放到DataGrip里执行,却发现没有数据(实际上数据库最新的数据只存了昨天的)。因为SQL里有用到时间转换函数,create_at = date_format(#{endTime}, '%Y-%m-%d'),endTime是java.util.Date类型。在我将DataGrip中SQL的时间设置为前一天的日期后得到了MyBatis 一样的结果。大概知道是什么原因了!
验证一下:

  1. 在DataGrip中查询连接的数据库的配置:
SHOW VARIABLES LIKE '%time_zone%';
image.png

可以看到时区设置的是CST(默认好像就是这个?)。

  1. 再去看配置文件里面的数据库连接参数,


    image.png

发现果然没有配置时区。
至此,结案~


解决方案:

  1. 修改数据库的默认时区配置;
  2. 修改数据库连接参数:
    加上 &serverTimezone=GMT%2b8 或者serverTimezone=Asia/Shanghai

关于CST时区的问题,详细的可以自行搜索。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容