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时区的问题,详细的可以自行搜索。

你可能感兴趣的:(MySQL时区问题)