在 MySQL 中設定時區
有很多關於 MySQL 和時區管理的文章,但在本文中,我們將嘗試填補缺失的資訊。我們將介紹如何有效地處理時區。
在 MySQL 中顯示伺服器中的當前時間
有時,在使用 MySQL 伺服器時,你需要處理不同的時區,這有時會讓你感到困惑。例如,你需要根據客戶的時間設定 MySQL Server 時間或將資料遷移到不同的伺服器和時區。
當你切換到夏令時 (DST) 時區時,也可能發生這種情況。為了確保時區與計劃的一致,你必須檢查或更改 MySQL 伺服器時區。
首先,我們需要檢查 MySQL 伺服器中的當前時間,以檢查它是否是所需的時區。
SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2022-02-19 21:58:15 |
+---------------------+
1 row in set (0.00 sec)
我們還可以查詢當前的全域性和會話時區值。
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
預設響應是 system
,這意味著伺服器和系統時區是相同的。
+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM | SYSTEM |
+--------------------+--------------------+
1 row in set (0.00 sec)
有幾種方法可以更改時區;讓我們一一看看。
更改配置檔案以更改 MySQL 中的時區
最簡單的方法是編輯配置檔案並設定預設時區。你可以通過以下程式碼從 Linux 伺服器的終端開啟 my.cnf
配置檔案。
$ sudo vi /etc/mysql/my.cnf
開啟檔案後,我們需要向下滾動一點找到 [mysqld]
部分,在這裡我們將看到 default-time-zone = "+00:00"
。此處 "+00:00"
顯示與 GMT 區域的偏移量。
我們可以通過設定"+01:00"
將其更改為匈牙利的時區。在某些情況下,你可能沒有 [mysqld]
部分;在這種情況下,你需要將其新增到檔案的末尾。
編輯檔案後,我們需要關閉它並使用以下命令重新啟動伺服器。
$ sudo service mysql restart
更改 Global time_zone
變數以更改 MySQL 中的時區
我們還可以更改伺服器的全球時區並設定新的 GMT 偏移值。
SET GLOBAL time_zone = '-4:00';
在此命令中,你需要設定你所在時區的 GMT 偏移量。我們將其設定為 GMT -4:00
小時。
你還可以使用其他定義,例如更改變數或編寫特定時區名稱。
SET GLOBAL time_zone = 'Europe/Budapest';
SET @@global.time_zone = '+02:00';
如果我們使用特定時區的名稱而不是數值,我們可能會遇到一個小問題。如果我們收到未知或不正確的時區
錯誤,則時區資料不會載入到 MySQL 伺服器中。
你可以按照填充時區表解決此問題。
僅為 MySQL 中的會話更改時區
如你所見,我們最初查詢了兩個變數;其中之一是 system_time_zone
。
通過更改此變數,你不會更改全域性時區,而只會更改每個會話的時區;重新啟動伺服器並再次執行後,你將回到原來的時區。
SET time_zone = "+00:00";
Subhan is a professional back-end developer as well as mobile developer. He is also open-source contributor by writing articles.
LinkedIn