2011-12-29 33 views
1

需要一些關於如何將整個數據庫TIMESTAMP列從一個時區轉換爲另一個時區的想法。將MySQL時間戳列從一個時區轉換爲另一個時區

當前服務器是UTC,MySQL也是UTC,所以在這方面一切都很好。所有時間相關的列都是TIMESTAMP。問題是當輸入時間信息時,他們在EST/EDT。例如,輸入開始時間:數據是1/1/2011 08:00:00 AM(美國東部時間/美國東部時間)。由於時區並未在開始時實施,因此數據庫將此存儲爲UTC時間08:00:00。所以數據庫中的所有數據都是這樣存儲的。一旦我們獲得需要時區信息的數據,該模型將會中斷。

問題是:如何將所有這些TIMESTAMP列轉換爲正確的UTC時間?代碼將會改變,以便在顯示方面在前進的基礎上進行處理,但歷史數據又如何呢?

最簡單的方法似乎是做某種mysqldump --tz-utc然後導入數據,然後釋放代碼。然而,我似乎無法找到一個很好的例子來說明如何正確地做到這一點,或者如果有其他方式可以以最有效的方式做到這一點。

謝謝!

回答

2

您可以使用MySQL AddTime函數更新現有數據嗎?

UPDATE MyTable SET MyTimeColumn = ADDTIME (MyTimeColumn, -8:00:00) WHERE <the data is bad> 
+0

這不會採取夏季的帳戶。 – 2012-12-28 12:00:07

相關問題