# 如何修改MySQL時區
## 引言
MySQL作為最流行的開源關系型數據庫之一,時區設置對于存儲和顯示時間數據至關重要。錯誤的時區配置可能導致應用程序顯示錯誤的時間戳,影響日志記錄、報表生成等關鍵功能。本文將詳細介紹MySQL時區的查看方法、修改方式以及常見問題解決方案。
---
## 一、查看當前MySQL時區設置
### 1. 查看全局和會話時區
```sql
-- 查看全局時區
SHOW GLOBAL VARIABLES LIKE '%time_zone%';
-- 查看當前會話時區
SHOW VARIABLES LIKE '%time_zone%';
輸出示例:
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+--------+
SELECT @@global.system_time_zone;
編輯MySQL配置文件:
/etc/my.cnf
或 /etc/mysql/my.cnf
my.ini
在[mysqld]
部分添加:
[mysqld]
default-time-zone = '+08:00'
# Linux系統
sudo systemctl restart mysqld
# Windows
net stop mysql
net start mysql
SET GLOBAL time_zone = '+8:00';
SET time_zone = 'Asia/Shanghai';
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
SET GLOBAL time_zone = 'Asia/Shanghai';
在連接字符串中添加時區參數:
jdbc:mysql://localhost:3306/db?useTimezone=true&serverTimezone=Asia/Shanghai
建議使用TIMESTAMP
類型(會轉換為UTC存儲)而非DATETIME
,除非明確需要存儲本地時間。
-- 將UTC時間轉換為本地時間
SELECT CONVERT_TZ('2023-01-01 12:00:00','+00:00','+08:00');
-- 獲取當前UTC時間
SELECT UTC_TIMESTAMP();
mysql_tzinfo_to_sql
導入時區數據生產環境建議:
云數據庫注意事項:
容器化部署:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
正確配置MySQL時區是確保時間數據準確性的基礎。建議根據實際業務需求選擇UTC存儲+應用層轉換或直接使用本地時區方案。定期檢查時區設置,特別是在跨時區部署或 daylight saving time 變更時。
注意:修改時區不會改變已存儲的時間數據,只會影響后續操作的顯示和計算。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。