2013-04-21 50 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