如何获得 MySQL 时区的完整列表?

Linda Hamilton
发布: 2024-11-03 00:10:02
原创
946 人浏览过

How can I get a comprehensive list of MySQL time zones?

MySQL 时区:详尽指南

问题: 是否有可用 MySQL 时区的完整列表?

答案: 是的,但根据主机操作系统的不同而有所不同。要访问该列表,您需要将时区数据加载到 MySQL 中。

如何加载时区数据:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
登录后复制

注意:此命令适用于 Unix 系统; Windows 的等效项未知。

列出时区:

加载数据后,您可以查看时区列表:

USE mysql;
SELECT * FROM `time_zone_name`;
登录后复制

卡尔加里当地时间:

要以卡尔加里当地时间显示时间,请使用以下语法:

SELECT CONVERT_TZ(CURRENT_TIMESTAMP, 'GMT', 'America/Edmonton');
登录后复制

其他注意:

  • 时区数据在 MySQL 中大约占用 5 MB。
  • 要卸载数据,请执行以下命令并重新启动 MySQL:
TRUNCATE `time_zone` ;
TRUNCATE `time_zone_leap_second` ;
TRUNCATE `time_zone_name` ;
TRUNCATE `time_zone_transition` ;
TRUNCATE `time_zone_transition_type` ;
登录后复制
  • 警告:不要删除这些表,因为这会导致问题。

自动时区更新:

您可以设置一个自动系统,当系统时区更改时更新 MySQL 时区。

对于 MySQL >= 5.6.6:

mysql_config_editor set --login-path=client --host=localhost --user=root --password
登录后复制

对于 MySQL 5.6.6:

创建一个 ~/.my.cnf 文件,内容如下:
[client]
user=root
password=yourMysqlRootPW
登录后复制

然后,将以下脚本添加到 crontab 中以每天运行:
if [ `find /usr/share/zoneinfo -mtime -1 | grep -v '\.tab' | wc -l` -gt 0 ]; then
    echo "Updating MySQL timezone info"
    mysql_tzinfo_to_sql /usr/share/zoneinfo 2>/dev/null | mysql -u root mysql
    echo "Done!\n"
fi
登录后复制

请记住,这大部分未经测试。如果您遇到任何问题,请报告他们以相应更新答案。

以上是如何获得 MySQL 时区的完整列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板