MySQL无法识别时区:Australia / Eucla(GMT + 08:45)

时间:2013-06-07 00:08:49

标签: mysql timezone

我在澳大利亚/尤克拉时区有一位客户(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)

你有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您需要更新MySQL的时区表。假设此区域位于系统的zoneinfo文件中,则可以使用mysql_tzinfo_to_sql命令对其进行更新。您可以在MySQL文档MySQL Server Time Zone Support

中找到详细信息

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

mysql_tzinfo_to_sql /usr/share/zoneinfo > zones.sql

并查看zones.sql文件。一旦您满意,您可以执行以下操作:

mysql -u root -p < zones.sql

答案 1 :(得分: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