最近在使用MySQL數(shù)據(jù)庫(kù)的時(shí)候遇到了一個(gè)奇怪的問題,就是時(shí)區(qū)設(shè)置成CST的時(shí)候,時(shí)間總是比實(shí)際時(shí)間少了13個(gè)小時(shí)。經(jīng)過一番研究,發(fā)現(xiàn)這其實(shí)是一個(gè)時(shí)區(qū)設(shè)置的問題。
在 MySQL 中,時(shí)區(qū)可以通過兩個(gè)變量來設(shè)置:
SET time_zone = 'Asia/Shanghai'; SET @@global.time_zone = 'Asia/Shanghai';
其中,第一個(gè)變量是當(dāng)前會(huì)話的時(shí)區(qū)設(shè)置,而第二個(gè)變量是全局的時(shí)區(qū)設(shè)置。但問題在于,MySQL中的 CST 實(shí)際上是指美國(guó)中部標(biāo)準(zhǔn)時(shí)間(Central Standard Time),而并不是中國(guó)標(biāo)準(zhǔn)時(shí)間(China Standard Time)。
因此,需要將時(shí)區(qū)設(shè)置成對(duì)應(yīng)的大陸中國(guó)的時(shí)區(qū),例如 Asia/Shanghai 或者 Asia/Chongqing,才能正確獲取當(dāng)前的中國(guó)時(shí)間。
SET time_zone = 'Asia/Shanghai'; SET @@global.time_zone = 'Asia/Shanghai';
通過上述代碼設(shè)置時(shí)區(qū)之后,再使用 MySQL 獲取當(dāng)前時(shí)間的函數(shù),就能得到正確的中國(guó)時(shí)間了。
SELECT NOW();
以上就是關(guān)于 MySQL 時(shí)區(qū) CST 少了13個(gè)小時(shí)的問題以及解決方法的介紹。如果您在使用 MySQL 的時(shí)候也遇到了類似的問題,可以嘗試按照上述步驟進(jìn)行設(shè)置,希望對(duì)您有幫助。