问题描述:在springboot使用jdbctemplate操作数据库时,不同的springboot版本所对应的mysql驱动版本不同,导致在时间处理上会有时区问题,查询到的时间字段的数据库存储字段不一致。
比如:2019-12-27 17:02:35 查询返回的结果是 2019-12-28 07:02:35
在springboot版本不可变的前提下
解决方案一:
指定mysql驱动版本为5.1.48,5.1.x中的最高版本,不能指定6.0.x,6.0.x、8.0.x同样有时区问题。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.48</version>
</dependency>
解决方案二:
在创建数据连接配置时指定时区:serverTimezone=GMT%2B8
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: user
password: qtfnzsBq9FOUg9E2sUuD
driver-class-name: com.mysql.jdbc.Driver
serverTimezone=GMT%2B8
北京时间东八区
serverTimezone=UTC
UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。
比如在java代码里面插入的时间为:2018-06-24 17:29:56
但是在数据库里面显示的时间却为:2018-06-24 09:29:56
有了8个小时的时差