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 中时区问题


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM