在使用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 以及转换
原文:https://www.cnblogs.com/tlz888/p/12191764.html