我在澳大利亚/尤克拉时区有一位客户(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)。
你有什么建议吗?
答案 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