排查问题:
1、保证系统时间与世界标准时间同步并设置正确的时区
下载ntp
yum install ntp
与系统时间同步
ntpdate time.nist.gov
设置成中国时区PRC
cp /usr/share/zoneinfo/PRC /etc/localtime
查看系统时间
date
2、MySQL与服务器系统时间是否一致
查看MySQL的当前时间
select now();
不一致的话,查看MySQL使用的时区
show variables like '%time_zone%';
- system_time_zone 表示正在使用的时区
- time_zone 表示MySQL采用时间相比正在使用的系统时区时间(SYSTE表示不作修改使用正在使用的时区,-+8:00表示在UTC时区基础上修改并保存,不用system_time_zone的时区)
# 全局修改,重新连接即可生效!
set global time_zone = 'SYSTEM/-+8:00';
flush privileges;
3、查看 JDBC驱动包mysql-connector-java
- 使用的版本是5.x.xx 的会根据程序传递数据,直接插入更新,不会有时区问题
- 使用的8.x.xx的版本,写入数据时会自动根据传入时间URL中的时区和mysql的时区进行时间转换并存储
(1)项目设置数据库连接URL中设置时区serverTimeZone=Asia/Shanghai
url: jdbc:mysql://IP地址/库名?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimeZone=Asia/Shanghai&allowMultiQueries=true
4、与前端json交互时时间类型数据会携带时区
spring:
jackson:
default-property-inclusion: non_null
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8