我已經存儲在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
沒有第二個參數,日期函數返回正確的值。有任何想法嗎?
我已經存儲在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
沒有第二個參數,日期函數返回正確的值。有任何想法嗎?
根據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服務器時區支持」中的描述設置時區。
這是如何回答問題的? – 2012-04-16 11:40:19
我以粗體顯示了該行。這解釋了原因。 – 2012-04-16 11:42:23
謝謝,這是正確的答案。運行SET @@ global.time_zone ='America/New_York';查詢解決問題! – 2012-04-16 11:44:05
添加'e',您可以獲得該時間戳的時區。
它可能與不同的時區有關。嘗試使用http://www.php.net/manual/en/function.date-timezone-set.php。
如果這是行不通的,探索日期函數的其餘部分: http://php.net/manual/en/book.datetime.php
可能是一個時區問題... – Romain 2012-04-16 11:26:17
'date()'函數會在顯示它之前將日期轉換爲服務器時間。一小時的差異可能是預期的結果。 – 2012-04-16 11:28:08
是數據庫和web服務器相同嗎?如果他們不同,他們是否有相同的時區? – 2012-04-16 11:41:38