軟件版本
- Windows:Windows10
- MySQL:mysql-8.0.16-winx64.zip
問題描述
java將當前時間保存到MySQL數(shù)據(jù)庫時,MySQL中的時間不正確
問題分析
原因一:java數(shù)據(jù)庫連接使用UTC時區(qū)(世界標準時間),即serverTimezone=UTC
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTCuseUnicode=truecharacterEncoding=utf8useSSL=true
原因二:MySQL使用的time_zone屬性是+00:00,而北京時間比UTC時間早8小時,即UTC+08:00
檢查MySQL
/**
* 可查看全局的時區(qū)設置和會話的時區(qū)設置
* global.time_zone負責java連接數(shù)據(jù)庫時的時區(qū)設置
* session.time_zone負責Navicat客戶端連接數(shù)據(jù)庫時的時區(qū)設置
* /
mysql> select @@global.time_zone,@@session.time_zone;
/**
* 還有一種方法
* System代表采用系統(tǒng)時區(qū)
* CST是一種很亂的時區(qū),它包括了4個時區(qū)
* /
mysql> show variables like '%time_zone%';
// 驗證時區(qū),這行命令可以檢測session.time_zone是否正確配置
mysql> select now();
解決方法
步驟一:修改java中的時區(qū)為東八區(qū)
// serverTimezone可以設置為北京時間GMT%2B8、上海時間Asia/Shanghai或者香港時間Hongkong
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/ShanghaiuseUnicode=truecharacterEncoding=utf8useSSL=true
步驟二:修改MySQL數(shù)據(jù)庫的時區(qū)為東八區(qū)
// 方法一:使用命令(優(yōu)點:不需要重啟MySQL服務,缺點:一旦MySQL服務被重啟,設置就會消失)
mysql> set time_zone = '+8:00';
mysql> set global time_zone = '+8:00';
// 方法二:修改my.ini配置文件(優(yōu)點:永久保存設置,缺點:需重啟MySQL服務)
[mysqld]
// 設置默認時區(qū)
default-time_zone='+8:00'
到此這篇關于解決MySQL8.0時區(qū)的問題步驟的文章就介紹到這了,更多相關MySQL8.0時區(qū)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- mysql解決時區(qū)相關問題
- 關于Java中的mysql時區(qū)問題詳解
- MySQL查看和修改時區(qū)的方法
- MySQL修改時區(qū)的方法小結
- 詳解MySQL查詢時區(qū)分字符串中字母大小寫的方法
- mysql時區(qū)問題