MySQL数据库时间和北京时间差13或者14小时

问题说明

关于13/14个小时的时间差的成因,已经有很多文章进行了分析说明。

现在的问题是,数据库已经存储了这些时间,需要在报表展示的时候显示为北京时间。

问题解决

问题的造成是因为时区和令时的问题,因此可以使用 MySQL CONVERT_TZ 函数进行转换显示,关键在于函数的第 2 个参数。

SELECT CONVERT_TZ('2023-03-27 10:00:00', 'America/Chicago', 'Asia/Shanghai');

查询结果(差13个小时):

MySQL数据库时间和北京时间差13或者14小时_第1张图片

SELECT CONVERT_TZ('2023-03-07 20:51:49.763', 'America/Chicago', 'Asia/Shanghai');

查询结果(差14个小时):
MySQL数据库时间和北京时间差13或者14小时_第2张图片

参考

本文形成过程主要参考 chatgpt 的回答:

MySQL数据库时间和北京时间差13或者14小时_第3张图片

你可能感兴趣的:(mysql)