aja*_*y p 7 mysql mysql-5.5 timezone
我想在 MySQL 中将日期从一个时区转换为另一个时区,我正在尝试的 MySQL 查询是
SELECT DATE_FORMAT(CONVERT_TZ('2015-12-18 06:00:00', '+0:00', '-05:00' ),'%b %d %Y %h:%i %p') AS test
FROM appointment
Run Code Online (Sandbox Code Playgroud)
这是正常工作。现在我遇到的问题是我的数据库使用时区名称作为America/New_York。
有没有办法使用时区名称而不是时区偏移量来转换时区?
最后我得到了答案:
MySQL 安装过程会在 mysql 数据库中创建一组时区表。在 Windows 上,这些表是预初始化的 mysql 数据库的一部分。在 Unix 上,这些表是在执行 mysql_install_db 时创建的,或者在 RPM 安装期间自动创建,或者如果从 tar 文件安装则手动创建。但是,这些时区表被创建为空表,这意味着无法使用命名时区。
要启用命名时区,您必须加载表。这是一个可选的配置过程,但除非执行它,否则时区支持仅限于系统区域和数字偏移量,例如“+06:00”。
在有时区文件的系统上,最好使用它们来加载MySQL时区表,以确保系统和MySQL时区基于相同的信息。许多 Unix 系统都有这些文件,通常位于 /usr/share/zoneinfo 下。对于这样的系统,使用mysql_tzinfo_to_sql程序将文件内容转换为可以由mysql程序加载到MySQL中的SQL语句。如果文件位于 /usr/share/zoneinfo,则命令如下所示:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
Run Code Online (Sandbox Code Playgroud)
有些系统没有时区文件,例如Windows和HP-UX。对于这些情况,MySQL 提供了一个发行版http://dev.mysql.com/downloads/timezones.html,其中包含一组填充的时区表(以 MyISAM 表文件的形式)。您可以下载发行版并将文件安装到 mysql 数据库中以替换空表。停止服务器,将文件复制到mysql数据库目录,然后重新启动服务器。
归档时间: |
|
查看次数: |
18526 次 |
最近记录: |