2010-08-19 23 views

回答

2

你能做到每個連接,當你開始連接到這個網站設置,

看看:

http://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html

每個連接的時區。連接的每個客戶端 都有其自己的時區 設置,由會話 給出time_zone變量。最初, 會話變量從 將其值全局的time_zone變量,但 客戶端可以改變自己的時區 有這樣的說法:

mysql> SET time_zone = timezone; 

但是要注意:

當前會話時區設置會影響區域敏感的 時間值的顯示和存儲。 這包括 函數顯示的值,例如NOW()或CURTIME(), 以及TIMESTAMP列中存儲的值和檢索的 。 TIMESTAMP列的值從當前時區的 轉換爲UTC存儲的 ,並從UTC轉換爲當前的 時區以供檢索。

的當前時區設置不 影響 DATE,時間或日期時間的列() 如UTC_TIMESTAMP由功能顯示的值或值。也不是 是以UTC存儲的 的那些數據類型中的值;僅當從TIMESTAMP 值轉換時,它們的時區才適用 。如果您希望針對DATE,TIME或DATETIME 值的語言環境特定的 算術,請將它們轉換爲UTC,然後執行 算術運算,然後再轉換回來。

一個例子,如何設置是:

http://www.electrictoolbox.com/mysql-set-timezone-per-connection

+0

SET time_zone ='Europe/London';它不適合我。 – Maximus 2010-08-19 13:19:34

+0

什麼不行?你想做什麼? – 2010-08-19 13:21:31

+0

當我執行查詢,我得到這個錯誤'#1298 - 未知或不正確的時區:'歐洲/倫敦'' – Maximus 2010-08-19 13:23:34

0

是的,你應該做的PHP內的所有時區轉換,而不是MySQL的。

對於您的數據庫存儲的日期/時間每列,要麼

一)在GMT存儲,並做必要的轉換或

二)本地時間總是

它存放在任何情況下,MySQL都不需要知道,但是您的開發人員應確保您在架構中記錄了這些信息,如果有混合的話。

通常需要存儲本地時間日期/時間值。 MySQL不記得日期時間列中的時區(也不容易;其他DB在某些情況下嘗試)。

如果您正在存儲一個已經發生的確切時間點(例如,現在),那麼您應該始終將其存儲在UTC中以避免混淆它發生的時間。有些應用程序爲此使用epoch/unix時間。

未來的時間你可能不得不在當地存儲,因爲你不能準確地告訴它什麼時候會發生,這可能取決於可能還沒有當選的政治家的決定。

時區是棘手的事情,因爲政客們控制它們。他們傾向於改變幾乎沒有警告(通常只有幾年)