0

我在澳大利亚/欧克拉时区 (GMT+08:45) 有一个客户。PHP 可以很好地识别这个时区,但是当我尝试使用 MySQL 转换日期时,我得到 NULL 返回。我将所有日期存储在 GMT+00:00 时间,然后进行转换。

这是一个例子:

SELECT  CONVERT_TZ( '2013-05-04 23:30:00' , '+00:00', '+08:75')
    -> NULL

如果我使用时区名称:

SELECT  CONVERT_TZ( '2013-05-04 23:30:00' , 'UTC', 'Australia/Eucla')
    -> NULL

我服务器上的 MySQL 是5.0.96-community-log - MySQL Community Edition (GPL)

你有什么建议吗?

4

2 回答 2

2

您需要更新 MySQL 的时区表。假设这个区域在你的系统zoneinfo文件中,你可以使用mysql_tzinfo_to_sql命令来更新它。您可以在 MySQL 文档MySQL 服务器时区支持中找到详细信息

如果要查看命令的作用,请先将输出重定向到文件:

mysql_tzinfo_to_sql /usr/share/zoneinfo > zones.sql

并查看 zone.sql 文件。一旦你满意,你可以执行它:

mysql -u root -p < zones.sql
于 2013-06-07T00:20:22.763 回答
0

您必须手动填充 mysql time_zone 表,因为它们默认为空。

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

加载后,您可以运行例如:

SELECT CONVERT_TZ( order_time,  'Australia/Melbourne',  'Australia/Perth' ) AS converted_time
FROM orders
于 2015-10-17T10:40:32.750 回答