项目场景:
最近使用SpringBoot做一个简易的员工,部门的系统,员工信息有出生日期,在mysql数据库中使用date类型对该属性进行存储
问题描述
在对date类型进行存储取出的过程,发现每次对date类型的数据进行修改,会造成date类型数据的日期数会比原先一次少一天;
但是在控制台对取出的更新前的员工信息是正确的,将数据传入数据库保存之后,就发现date类型数据,比原先少一天;
原因分析:
发现跟数据库的url配置的时区信息有关
以下是我的yaml的数据源配置部分信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/Work?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
使用UTC这样的时区与系统日期会有八个小时的时差
解决方案:
只需要将serverTimezone设置为Asia/Shanghai或者HongKong,问题就解决了。
旧版本的MySql数据库驱动无需配置时区等(mysql5版本以下)