2012-04-16 218 views
1

我已經存儲在DATETIME領域在MySQL以下日期:MySQL的UNIX_TIMESTAMP返回不正確的值

2012-04-16 16:21:54 

比我選擇它是這樣的:

SELECT UNIX_TIMESTAMP(date) .... 

,但如果我使用PHP日期打印時間功能我得到一個小時的時差:

echo date("H:i:s", $row->date) 

將打印:

17:21:54 

沒有第二個參數,日期函數返回正確的值。有任何想法嗎?

+3

可能是一個時區問題... – Romain 2012-04-16 11:26:17

+0

'date()'函數會在顯示它之前將日期轉換爲服務器時間。一小時的差異可能是預期的結果。 – 2012-04-16 11:28:08

+0

是數據庫和web服務器相同嗎?如果他們不同,他們是否有相同的時區? – 2012-04-16 11:41:38

回答

1

根據MySQL手冊 -

UNIX_TIMESTAMP()UNIX_TIMESTAMP(date)

如果不帶參數調用,返回一個Unix時間戳(自'1970-01-01 00:00:00'UTC以來的秒數)作爲無符號整數。如果使用日期參數調用UNIX_TIMESTAMP(),則它會以「1970-01-01 00:00:00」UTC以來的秒數形式返回參數的值。日期可以是DATE字符串,DATETIME字符串,TIMESTAMP或格式爲YYMMDD或YYYYMMDD的數字。服務器將日期解釋爲當前時區中的值,並將其轉換爲UTC內部值。客戶可以按照第10.6節「MySQL服務器時區支持」中的描述設置時區。

+0

這是如何回答問題的? – 2012-04-16 11:40:19

+0

我以粗體顯示了該行。這解釋了原因。 – 2012-04-16 11:42:23

+0

謝謝,這是正確的答案。運行SET @@ global.time_zone ='America/New_York';查詢解決問題! – 2012-04-16 11:44:05