2013-04-21 59 views
1
UPDATE bridge_copy SET 
     game_begin = CONVERT_TZ(game_begin,'EST','GMT'), 
     game_end = CONVERT_TZ(game_end,'EST','GMT'); 

这东部时区转换为GMT是我试图运行查询,并misserably失败。最终的结果是,2列填充0000-00-00 00:00:00而不是转换。任何想法如何我可以更新12k +行,而不通过一些服务器端脚本循环选择当前值,转换它,然后更新它?批量使用CONVERT_TZ 12K +记录

回答

1

您有正确的想法,但您需要使用mysql.time_zone_name表中的时区名称。通常这是空的,需要填充。

对我来说,TIME_ZONE_NAME表是空的,所以我跑(在Ubuntu Linux):

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

然后我就能够测试此使用:

SELECT CONVERT_TZ(game_end, "US/Eastern","GMT") from 
bridge_copy; 

确认它是干什么的之后预计,那么我可以继续进行更新。注意我使用的是“US/Eastern”,只要确保从mysql.time_zone_name表中选择了一些东西即可。

有关更多时区信息,请参阅文档。 http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html