如何填充MariaDB时区表?解决CONVERT_TZ函数返回NULL问题
解决MariaDB CONVERT_TZ返回NULL的时区表填充方法
当CONVERT_TZ()返回NULL时,核心原因是MariaDB的mysql库中时区表未填充数据。以下是不同系统下的具体操作步骤:
Linux系统操作
使用MariaDB内置的mysql_tzinfo_to_sql工具,直接从系统时区文件导入数据:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
执行命令后输入root用户密码,工具会自动将系统时区数据导入到MariaDB的时区表中。
Windows系统操作
Windows默认没有系统级时区数据库文件,需手动导入预先生成的时区SQL脚本:
- 获取与你的MariaDB版本兼容的时区SQL脚本
- 登录MariaDB客户端,执行以下命令导入脚本:
USE mysql; SOURCE D:/path/to/timezone_data.sql; -- 替换为实际文件路径
验证结果
导入完成后,重新运行你的测试语句:
SELECT CONVERT_TZ('2016-01-01 12:00:00','GMT','Africa/Johannesburg');
正常情况下会返回2016-01-01 14:00:00,说明时区表已成功填充。
注意事项
- 操作需要拥有MariaDB的root权限(或具备
mysql库的写入权限) - 导入后无需重启服务,变更立即生效
- 若导入时出现权限报错,检查当前账号的权限设置
内容的提问来源于stack exchange,提问作者AhmadRaza
相关产品推荐
相关产品推荐

