首页/数据/数据库速查/时区设置与时间显示排查
本包目录(495 条)

时区设置与时间显示排查

时间函数结果取决于会话时区:云数据库与容器常是 UTC,业务按东八区理解就会出现「时间差 8 小时」。

数据库速查数据更新于 2026-10-12
用途时间语义一致
查看SELECT @@global.time_zone, @@session.time_zone;
依赖mysql 时区表或固定偏移

查看与设置

查看与设置
SELECT NOW(), UTC_TIMESTAMP(), @@time_zone;
SET GLOBAL time_zone = '+08:00';
SET time_zone = '+08:00';

加载时区表与持久配置

加载时区表与持久配置
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql
# my.cnf
[mysqld]
default-time-zone = '+08:00'
TIMESTAMP 存 UTC、显示时按会话时区换算;DATETIME 原样存取不换算。跨时区系统建议统一 UTC 存储、展示层转换。

易错点

  • 服务器未加载时区表时,SET time_zone='Asia/Shanghai' 会报 Unknown or incorrect time zone
  • 时区改了历史 TIMESTAMP 数据显示会变化,但底存值不变;混用 DATETIME 与 TIMESTAMP 最容易踩坑

数据来源与参考

  • MySQL 8.0 Reference Manual: MySQL Server Time Zone Support

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌