2013-05-12 111 views
0

有沒有辦法在php中查看是否((當前時間 - 數據庫中的時間戳)> 10分鐘)?我在一個名爲lockout的數據庫中有一行。我有以下代碼至今:計算比較sql時間戳和php日期(「y-m-d h:i:s」)

echo $row['lockout'];//returns 2013-05-12 22:04:17 
echo date("Y-m-d H:i:s")//returns 2013-05-12 22:06:32  

而且沒有任何人有任何想法,爲什麼當我在數據庫中插入當前時間戳,它是大約一個半小時關閉,但有正確的日期和年份?

回答

0

如果你的SQL方言MySQL的使用

... WHERE UNIX_TIMESTAMP(NOW())-lockout>=600 ... 

或PHP類似的東西。

0

在查詢中這樣做:

WHERE `lockout` < DATE_SUB(NOW(), INTERVAL 10 MINUTE) 

或者,如果你不能依靠MySQL的時間,使用

mysqli_query(' 
... WHERE `lockout` < DATE_SUB(FROM_UNIXTIME(' . time() . '), INTERVAL 10 MINUTE) ... 
'); 

或者,如果你一定要date(...),使用

mysqli_query(' 
... WHERE `lockout` < DATE_SUB(' . date('Y-m-d H:i:s') . ', INTERVAL 10 MINUTE) ... 
'); 

您可能想要比較MySQL和PHP的時區和服務器的時區(如果MySQL和PHP位於分區中te主機)。

+0

@盧卡斯我不是在SQL查詢中進行計算比較。這是在我的PHP代碼中的if語句。如果((日期(「​​Ymd H:i:s」) - $ row ['lockout'])> 600){ echo'

1

在PHP中您可以使用strtotime功能與relative formats- 10 minutes以獲得所需的Unix時間戳:

if (strtotime('- 10 minutes') < strtotime($row['lockout'])) ...