软件版本
windows:windows10
mysql:mysql-8.0.16-winx64.zip
问题描述
java将当前时间保存到mysql数据库时,mysql中的时间不正确
问题分析
原因一:java数据库连接使用utc时区(世界标准时间),即servertimezone=utc
url: jdbc:mysql://localhost:3306/test?servertimezone=utc&useunicode=true&characterencoding=utf8&usessl=true
原因二:mysql使用的time_zone属性是+00:00,而北京时间比utc时间早8小时,即utc+08:00
检查mysql
/**
* 可查看全局的时区设置和会话的时区设置
* global.time_zone负责java连接数据库时的时区设置
* session.time_zone负责navicat客户端连接数据库时的时区设置
* /
mysql> select @@global.time_zone,@@session.time_zone;
/**
* 还有一种方法
* system代表采用系统时区
* cst是一种很乱的时区,它包括了4个时区
* /
mysql> show variables like '%time_zone%';
// 验证时区,这行命令可以检测session.time_zone是否正确配置