Springboot2 Mysql时区设置

本文探讨了Springboot2在使用jdbctemplate操作Mysql时遇到的时区问题,导致查询结果与数据库存储的时间不一致。解决方案包括指定mysql驱动版本为5.1.48以避免时区问题,或者在数据库连接配置中设置`serverTimezone=GMT%2B8`以适应北京时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:在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个小时的时差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值