2011-05-24 141 views
-2

我在我的幾個表格中有這些「創建」和「修改」字段,但我剛剛意識到在這些表格中出現的小時不是正確的,但是一小時後,所以讓我們假設它是10:47:05在當地時間,那麼存儲到數據庫的小時數是11而不是10,而且它總是相同的,我從來沒有得到正確的時間。Mysql不會返回正確的時間?

編輯:好的球員我試圖從MySQL配置文件(的my.ini)設置的時間區,加入默認時區= '-05:00'在[myqld]部分和之後,我檢查了全局和會話時區,看看是否一切正常,顯然是這樣,但是當我插入或更新一些記錄並檢查「已創建」和「已修改」字段以查看現在是否正確時,令我感到失望的是,他們還比現在晚了一個小時。

enter image description here

+2

這是最有可能的一個時區的問題。什麼是你的服務器時區,什麼是mySQL的時區? – 2011-05-24 18:14:22

+1

誰讚揚這個東西?這是一個數據庫配置問題。 – 2011-05-24 18:17:23

+0

殺了cakephp標籤 - 它至少不是一個cakephp問題 – 2011-05-24 23:23:47

回答

0

嗯,我終於搞定了它,事實證明,它不是MySQL,它甚至不是CakePhp - 它是PHP !!!!。

Here's我做了什麼來解決這個問題:

+1

@ eddy-很高興你終於可以解決它了! – 2011-05-25 17:51:56

+0

你看。我知道你可以自己做。 – 2011-05-25 17:55:34

0

這肯定看起來是一個時區的問題。如果您無權設置時區,則始終可以將mysql的unix時間戳從代碼中設置爲該字段的值。例如,如果你的字段是DATETIME,使用PHP,你可以編寫「INSERT table SET datetime = FROM_UNIXTIMESTAMP(」.time()。「)」; ;,如果它只是一個時間戳字段,你可以將time()作爲一個值。 DATETIME的另一種選擇是使用php的日期函數發送一個MYSQL格式的日期字符串。

這是最好設置你的服務器的時區,但如果你不能,上面應該足夠

編輯:上面的代碼是純粹的一個例子,所以概率不會複製和粘貼工作情況,這純粹是一個指導