2013-02-06 49 views
1

我想將我們的mysql服務器從共享主機遷移到本地服務器。根據MySQL中的時區更改CURRENT_TIMESTAMP值

當前服務器處於MST時區,數據庫中CURRENT_TIMESTAMP的值存儲爲-7:00 GMT。

現在我想在印度的專用服務器上移動完整的應用程序。還希望將存儲在-7:00 GMT的日期值轉換爲+5:30 GMT。

我可以通過編寫腳本更新時間來完成更新日期的任務,但是我想知道是否有任何方法可以從數據庫本身執行此操作(在導入時或導出時)

mysql version 5.0.96-log。我沒有得到UTC中的選項導出時間戳。

回答

3

使用mysqldump時,設置標誌:--tz-utc強制將所有時間戳導出爲UTC。 (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_tz-utc)。這裏請注意- 默認情況下啓用了ut-utc。所以,你應該做什麼:但測試第一:)

如果只是與服務器上的時間戳的工作,你不必做任何事情,將它們轉換,從TIMESTAMP後的MySQL 4.1(http://dev.mysql.com/doc/refman/4.1/en/timestamp.html)的文檔:

「的價值觀仍然存儲在UTC,而是從存儲當前 時區轉換,並轉換回當前的時區 檢索。只要時區設置保持不變,你 取回您存儲的相同值。如果您存儲了TIMESTAMP值,並且 n更改時區並檢索該值,檢索到的值 與您存儲的值不同。「

這很容易測試:

  1. 保存時間戳到表
  2. 更改服務器的時區
  3. 檢索:返回值應該反映新的時區。

所以另一種選擇是,你可以只是兩個設置爲相同的時區,而做出口/進口,不是設置他們回到正確的時區(S)後,它是完整的,但使用mysqldump此注意服務器應該沒有必要。

+0

感謝。 我想我錯過了通知,我試圖通過從一臺服務器轉儲並將其導入其他服務器來遷移數據。因此,在導入轉儲時,除非明確指定,否則服務器將無法確定導出轉儲的時區。 – rkmourya

+0

已更新,以反映該問題。 – Matthew

+0

謝謝。爲兩臺服務器設置相同的時區以進行導入和導出,並在事務處理後更改時區似乎是最佳選擇。 – rkmourya

-2

一般語法

SELECT DATE_ADD(<column_name>, INTERVAL HOUR); 

改變到UTC MST

SELECT DATE_ADD(NOW(), INTERVAL 7 HOUR); 
+1

這實際上並沒有回答這個問題。 – EJP

+0

的確,這不是一個答案。 – lpapp