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+ 行而不通过一些服务器端脚本来循环它们,该脚本选择当前值,转换它,然后更新它?
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+ 行而不通过一些服务器端脚本来循环它们,该脚本选择当前值,转换它,然后更新它?
您有正确的想法,但您需要使用 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;
在确认它符合预期后,我可以继续进行更新。注意我使用的是“美国/东部”,只要确保从 mysql.time_zone_name 表中选择一些东西。
有关更多时区信息,请参阅文档。 http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html