MyBatis中LocalDate时差的坑

问题定位

  在使用mybatis进行数据查询时,使用到LocalDate作为参数(2018-06-18),结果查出来的数据早了一天(2018-06-17),猜测是日期的时差问题,

具体打印出一个包含时间的字段,发现,查出来的时间比数据库中的时间晚了14小时。然后网上搜索,找到了说法(参考文章【1】):

  LocalDate为本地时区,数据库使用的时区是CST,参考文章【2】,CST应该表示 Central Standard Time (USA) UTC-6:00

与中国时区+8 正好差了14h

经过本地验证,确是如此,我的数据库使用的time_zone也为CST。

解决方案

  参考文章【1】的解决方案是修改数据库时区为中国+8时区,但是我自己这边的数据库是个老数据库,不想改动那么大,

最终参考了文章【3】的方法:修改数据库连接中的时区参数:

  使用上海时间:serverTimezone=Asia/Shanghai

  或者

  使用北京时间:serverTimezone=GMT%2B8

参考文章:

【1】mybatis查询mysql的datetime类型数据时间差了14小时(时区问题)

【2】时区缩写 UTC, CST, GMT, CEST 以及转换

【3】mysql url 中时区问题

原文地址:https://www.cnblogs.com/tlz888/p/12191764.html