[MySQL]修改MySQL 時區
在 MySQL 中,時區 (time_zone) 影響到 時間函式(如 NOW())的輸出,但 不影響 TIMESTAMP 類型的儲存,因為 TIMESTAMP 會自動轉換為 UTC 存儲。
✅ 1. 檢查 MySQL 當前時區
執行以下 SQL 查詢:
回傳可能是:
這表示:
@@global.time_zone為SYSTEM(使用系統時區)@@session.time_zone為UTC+0
SELECT @@global.time_zone, @@session.time_zone;
✅ 2. 修改 MySQL 時區
方法 1:臨時修改(不影響重啟後設定)
🔹 修改當前連線(Session)時區
驗證變更:
🔹 修改全域(Global)時區
這樣所有新的連線都會使用 UTC+8,但 MySQL 重啟後會恢復預設值。
方法 2:永久修改(影響 MySQL 服務)
如果想要 永久修改 MySQL 時區,需要編輯 MySQL 配置檔案。
🔹 1. 編輯 my.cnf 或 my.ini
Linux/macOS(通常在 /etc/mysql/my.cnf 或 /etc/my.cnf):
Windows(通常在 C:\ProgramData\MySQL\MySQL Server X.X\my.ini):
在 [mysqld] 區塊內添加:
保存後,重啟 MySQL:
🔹 2. 確保 MySQL 支援時區
有時 time_zone 可能無法正確設定,需要載入時區數據:
然後在 my.cnf 設定:
✅ 3. 設定 MySQL 時區為 Asia/Taipei(台北時間)
但部分 MySQL 版本 不支援直接使用 Asia/Taipei,可以改用:
總結
| 操作 | 指令 | 影響範圍 |
|---|---|---|
| 查詢當前時區 | SELECT @@global.time_zone, @@session.time_zone; | 查看目前的 MySQL 時區 |
| 修改當前連線時區 | SET time_zone = '+08:00'; | 只影響當前連線 |
| 修改全域時區 | SET GLOBAL time_zone = '+08:00'; | 影響新連線(重啟 MySQL 會還原) |
| 永久修改時區 | 在 my.cnf 加入 default-time-zone = '+08:00' | 影響整個 MySQL 服務 |
留言
張貼留言