2011-03-21 215 views
11

我有一個共享主機mySql實例,它的system_time_zone設置爲太平洋標準時間,它的time_zone變量設置爲System,因此它有效地在Pacific Standard Time上運行。通過PhPMyAdmin在MySql服務器上設置默認時區

即我已經運行下面的命令找出了這一點:

SELECT version() , @@time_zone , @@system_time_zone , NOW() , UTC_TIMESTAMP() 

我想默認的MySQL數據庫/本地MySQL數據庫的時區更改爲GMT/UTC時間。我試圖運行,SET time_zone = '+0:00',這確實執行成功!

但是,當我檢查@@ time_zone的狀態時,這似乎不會影響time_zone變量。我看了另一篇文章處理類似問題How to set MySQL to use GMT in Windows and Linux,我也檢查了MySql documentation,但進展甚微。由於我使用的是共享託管解決方案,因此我的訪問權限有限,而且我無法訪問我的PhPMyAdmin mySql功能所提供的功能。

我想知道是否有任何方法可以從SQL查詢中更改default_time-zone,或者是否需要回退到命令行(我不能訪問,不幸)。

感謝您的幫助和建議,

馬丁

+1

你有沒有試過SET SESSION time_zone ='+0:00'或SET GLOBAL time_zone ='+0:00'? – dseibert 2011-03-21 18:35:53

+0

感謝提示'client09',但不幸的是我得到了「#1227 - 訪問被拒絕;您需要SUPER權限進行此操作」,對共享主機沒有足夠的權限。 – sigi 2011-03-29 08:25:10

回答

2

共享主機,你要問的支持,人幫助你,更改默認時區嗎?我和Arcor託管服務提供商有類似的問題,打電話給他們,他們修復了它。在此之前,我從PHP代碼中找到date_default_timezone_set()的臨時解決方案。最好的解決辦法可能是詢問有權更改該參數的人。

+0

我認爲在我的共享託管情況下,這可能是最明智的做法。我聯繫了他們,不幸他們拒絕爲我改變默認時區。我發現這很奇怪,但是我沒有遵循它,因爲我剛剛決定在服務器端將我所有的時間轉換爲UTC,而只是使用UTC來代替,這似乎是有效的。 – sigi 2011-03-29 08:28:31

6

總之,MySQL實際上在內部存儲'datetime'數據類型字段爲UTC

HoweverPhpMyAdmin向您顯示使用服務器默認時間的日期,因此您的困惑。

例如,嘗試在PhpMyAdmin加入這一行你的SQL語句之前:

SET @@session.time_zone='+00:00'; 
SELECT * FROM MY_TABLE 

見這個職位的MySQL文檔的詳細信息,或者回答:How to correctly set mysql timezone

乾杯 馬特

-1
<?php 
date_default_timezone_set('UTC'); //define local time 

$date=date('l jS \of F Y h:i:s A'); //type of time shown 

$conn=mysql_connect("localhost","root","") or die('Could not connect!'); //your database connection here 

$db_selected = mysql_select_db('databasename', $conn); //select db 

$result=mysql_query("INSERT INTO table (date) VALUES ('$date')", $conn); 
?> 

只需將時間作爲VARCHAR發送到db希望它幫助和抱歉sy ntax錯誤(如果有的話)。