mysql时区导致数据显示差13/14小时的问题解决

时间:2024-04-06 20:10:41

一次升级后忽然发现,所有业务时间显示都偏差了13/14小时,参考一篇文章确定了问题(https://cloud.tencent.com/developer/article/1479334)。
centos7的系统时区设置:
mysql时区导致数据显示差13/14小时的问题解决
mysql时区导致数据显示差13/14小时的问题解决

参考百度百科:
CST可以为如下4个不同的时区的缩写:
美国中部时间:Central Standard Time (USA) UT-6:00
澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
中国标准时间:China Standard Time UT+8:00
古巴标准时间:Cuba Standard Time UT-4:00

注意看centos7中timezone : CST +800
也就是说CST需要配合timezone一起使用

再来看Mysql的:

show variables like “%time_zone%”;
±-----------------±-------+
| Variable_name | Value |
±-----------------±-------+
| system_time_zone | CST |
| time_zone | SYSTEM |

jdbc去调Mysql的时区时,time_zone system 存在问题,丢失了+800时区信息
导致数据显示出来差13/14 小时。
解决办法:
手动明确指定 MySQL 数据库的时区,不使用引发误解的 CST:
临时生效:
mysql> set global time_zone = ‘+08:00’;
Query OK, 0 rows affected (0.00 sec)
mysql> set time_zone = ‘+08:00’;
Query OK, 0 rows affected (0.00 sec)
永久生效(修改后需要重启mysql):
修改 my.cnf 文件,在 [mysqld] 节下增加 default-time-zone = ‘+08:00’