MySQL時(shí)間差8小時(shí)的解決方案
在開發(fā)中,有可能會(huì)遇到這種情況:
- 插入數(shù)據(jù)庫中的時(shí)間時(shí)正常。
- 但是將時(shí)間傳到前端頁面上顯示時(shí),會(huì)早8個(gè)小時(shí)。
這個(gè)問題我們可以從兩方面來分析:
- MySQL 本身的問題。
- JDBC 連接的問題。
1. MySQL 本身的問題
1-1. 驗(yàn)證MySQL時(shí)間
首先,我們執(zhí)行如下 SQL 看看 MySQL 上的時(shí)間跟我的電腦時(shí)間是否是一致的:
select now();
如果 MySQL 的這個(gè)時(shí)間跟系統(tǒng)的時(shí)間差了 8 小時(shí),MySQL 本身的時(shí)間都不對(duì),那你將來插入/查詢的時(shí)間肯定也不對(duì)。
出現(xiàn)這個(gè)問題,多半是 MySQL 的時(shí)區(qū)不太對(duì),我們重新給其設(shè)置一下時(shí)區(qū)即可。
1-2. 修改Mysql時(shí)區(qū)
首先我們通過如下指令來查看一下 MySQL 當(dāng)前的時(shí)區(qū):
show variables like '%time_zone%';
- 可以看到,MySQL 說它的時(shí)區(qū)是
SYSTEM
- 那 SYSTEM 又是啥呢?第一條說了 SYSTEM 是
UTC
(協(xié)調(diào)世界時(shí),又稱世界標(biāo)準(zhǔn)時(shí)間或世界協(xié)調(diào)時(shí)間)。 - 而我們的北京時(shí)間比 UTC
快了 8 小時(shí)
,即UTC+8
。
配置文件修改Mysql時(shí)區(qū)
default-time-zone='+08:00'
windows
根據(jù)Mysql安裝目錄,修改my.ini
文件
Linux
找到/etc/mysql/mysql.conf.d/mysqld.cnf
修改
修改完成后,重啟 MySQL,再來查看 MySQL 的時(shí)區(qū)
SQL修改Mysql時(shí)區(qū)
通過 SQL 來修改時(shí)區(qū):
set global time_zone='+8:00';
注意我們所在的時(shí)區(qū)是東八區(qū)
2.JDBC 連接的問題
當(dāng)確認(rèn)了 MySQL 沒有問題后,如果你的 MySQL 時(shí)間還是不對(duì),那么就有可能是 JDBC 連接的問題了。
JDBC 連接設(shè)置參數(shù):serverTimezone=Asia/Shanghai
JDBC 連接參數(shù)中的時(shí)區(qū)優(yōu)先級(jí)高于 MySQL 服務(wù)器的時(shí)區(qū)參數(shù),所以這個(gè)連接參數(shù)大家也要尤其注意。
jdbc:mysql://localhost:3306/team_pan?serverTimezone=Asia/Shanghai
3. 返回 JSON 時(shí)間不對(duì)
如果在項(xiàng)目中用了 jackson
,并且使用 @JsonFormat
注解來格式化日期,就有可能出現(xiàn)時(shí)區(qū)問題,如下:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
大家看到,這段代碼如果沒有設(shè)置 timezone
屬性,那么默認(rèn)的時(shí)區(qū)就是 UTC,也會(huì)導(dǎo)致最終的時(shí)間差了 8 小時(shí)。
到此這篇關(guān)于MySQL時(shí)間差8小時(shí)的解決方案的文章就介紹到這了,更多相關(guān)MySQL時(shí)間差8小時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql分組查詢每組最新一條數(shù)據(jù)的三種實(shí)現(xiàn)方法
我們?cè)陂_發(fā)中經(jīng)常會(huì)遇到分組查詢最新數(shù)據(jù)的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql分組查詢每組最新一條數(shù)據(jù)的三種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Linux安裝mysql并配置外網(wǎng)訪問的實(shí)例
今天小編就為大家分享一篇Linux安裝mysql并配置外網(wǎng)訪問的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05MySQL Router實(shí)現(xiàn)MySQL的讀寫分離的方法
MySQL Router是MySQL官方提供的一個(gè)輕量級(jí)MySQL中間件,用于取代以前老版本的SQL proxy。本文主要介紹了MySQL Router實(shí)現(xiàn)MySQL的讀寫分離的方法,感興趣的可以了解一下2021-05-05MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情
這篇文章主要介紹了MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情,文章通過實(shí)際案例,從代碼實(shí)戰(zhàn)的角度來實(shí)現(xiàn)這樣的一個(gè)數(shù)據(jù)權(quán)限。具體詳細(xì)介紹,具有一定的參考價(jià)值2022-08-08Win7系統(tǒng)下mysql 5.7.11安裝教程詳解
這篇文章主要介紹了Win7系統(tǒng)下mysql 5.7.11安裝教程,需要的朋友可以參考下2017-09-09MySQL 一則慢日志監(jiān)控誤報(bào)的問題分析與解決
這篇文章主要介紹了MySQL 一則慢日志監(jiān)控誤報(bào)的問題分析與解決,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2021-01-01