使用CONVERT_TZ 12k +记录将东部时区批量转换为gmt

时间:2013-04-21 02:50:12

标签: mysql datetime convert-tz

UPDATE bridge_copy SET 
      game_begin = CONVERT_TZ(game_begin,'EST','GMT'), 
      game_end = CONVERT_TZ(game_end,'EST','GMT');

这是我试图运行的查询,但它失败了。最终结果是,2列填充了0000-00-00 00:00:00而不是转换。任何想法我如何更新12k +行而不通过选择当前值的一些服务器端脚本循环它们,转换它,然后更新它?

1 个答案:

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