在做项目时,使用mybatis查询关于timestamp字段时
发现返回到对象当中比数据库的时间少8个小时
检查Mysql 使用系统时区
如果是默认时区或者GMT都表示东八区
如果是CST,CST是美国,澳大利亚时间,这样的话是Java查询数据库时错误的认为是东八区时间,所以查出来减8到标准时间。
我这边系统使用的是默认时区
解决方法
可以肯定的是时区出了问题了。
一种解决方式是修改系统的时区问题,这里省略,咱们说的是在项目里的解决方案
修改apploaction.proterties或者yml文件 里面
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
同时数据库url也添加 serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://localhost:3306/test?&serverTimezone=GMT%2B8
注:
%2B是urlEncode码,表示的是 + 号