执行sql进行测试
SELECT CONVERT_TZ('2025-01-01 00:00:00', 'UTC', 'Asia/Shanghai');
MySQL默认不带时区数据,所以这里一般会输出NULL

Linux环境导入时区数据:执行命令,这将会把/usr/share/zoneinfo下的时区数据导入mysql数据库中的time_zone等相关表中
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -pPASSWD mysql
# 可能还需要重启
systemctl restart mysqld
windows环境导入时区数据:浏览器访问 https://dev.mysql.com/downloads/timezones.html ,下载timezone_2025b_posix_sql.zip标准版本的时区数据包,解压后是一个sql文件,将其导入到mysql库中即可

再次执行sql:
SELECT CONVERT_TZ('2025-01-01 00:00:00', 'UTC', 'Asia/Shanghai');
正常输出:

假设现在有一个user表,其中的create_time字段存储的是UTC时间,那么你在查询时,就可以用下面的sql将create_time转成Asia/Shanghai时间
SELECT *, CONVERT_TZ(create_time, 'UTC', 'Asia/Shanghai') FROM `user`


2906

被折叠的 条评论
为什么被折叠?



