我有一个MySQL数据库(托管在Ubuntu上),它有一个带时区的表。此日期位于UTC时区。我有一个使用此数据的应用程序但需要将时间从UTC转换为PST以便以有用的格式显示数据。
这可能会在应用程序级别上更改,但我目前没有时间这样做,所以我想要做的是使用convert_tz
来获取正确的时区,直到我有时间更改应用程序以转换时区。
然而,每当我做
之类的事情时SELECT id,
category,
convert_tz(create_datetime, 'UTC', 'PST') as create_datetime
FROM table
我得到的结果如
1, category, NULL
我知道我需要加载时区表,所以我做了,运行这个命令:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
之后我重新启动了mysql服务。但是,convert_tz
仍会返回NULL
。有人可以帮我一把吗?
谢谢!
答案 0 :(得分:1)
确保您创建的datetime列的类型为timestamp
请参阅此http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz。
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
答案 1 :(得分:1)
当我遇到这个问题时,那是因为我使用了错误的时区名称。我从MySQL文档MET中的示例中使用的时区错误地推断出,像PST这样的3个字母的美国时区可以工作。情况并非如此:美国时区被命名为“PST8PDT'等等。所以,而
select convert_tz('2016-10-16 06:23:00', 'UTC', 'PST');
返回NULL
,
select convert_tz('2016-10-16 06:23:00', 'UTC', 'PST8PDT');
返回转换时间。
您可以使用
在MySQL实例中查看时区名称select Name from mysql.time_zone_name;