2012-07-11 27 views
3

我正在從PHP文件中設置數據庫值。在PHP文件中,我有一個存儲unix時間戳值的字符串變量。將具有unix時間戳值的PHP字符串轉換爲MySQL時間戳值

MySql表我有一個架構,我必須將這些時間戳值存儲在時間戳數據類型的登錄字段中。

我試圖發送

date('Y-m-d G:i:s', strtotime($userLogin)); 

到我的數據庫,但所有它存儲是0000-00-00 00:00:00

+0

您確認$ userLogin的值有效嗎? strtodate()可能返回FALSE(零)。要進行調試,您應該考慮將語句分爲兩步: 1)將strtotime()的返回值賦給一個變量,以便驗證它,並且使用新創建的變量調用date()。 – SetFreeByTruth 2012-07-11 22:23:58

回答

1

strtotime()用於將各種日期格式的字符串轉換爲UNIX時間戳。如果字符串已經是時間戳,那麼對於strtotime()而言,它看起來不像一個有意義的格式化日期/時間,並且會失敗。

如果字符串已經是一個時間戳,那麼您不需要對它進行更多的操作而不是將其轉換爲整數(嚴格來說,即使該步驟不應該是必需的,但是投射會將任何非數字字符,所以它不一般不疼投)

此外,MySQL是能夠分析UNIX時間戳(含FROM_UNIXTIME()的,我想,我必須看看它,以確保)

2

MySQL提供了FROM_UNIXTIME()UNIX_TIMESTAMP()函數來將Unix時間戳轉換爲MySQL日期格式,反之亦然。

例子:

$sql = "INSERT INTO yourtable(date, ..., ...) VALUES (FROM_UNIXTIME($yourdate), ..., ...)"; 
0

如果$userLogin持有timestamp值比你不需要使用strtotime()

例如,這個應該工作 - >

$userLogin = time(); 
date('Y-m-d G:i:s', $userLogin); 
0

我必須添加

$login = date('Y-m-d H:i:s',(int)($userLogin/1000)); 

它的工作...