2013-06-02 43 views
0

中的時間戳列我有一個表使用當前的時間戳自動更新。讓列名是「updatedTime」。它給了我們說的價值:比較php

2013年6月2日十七點38分10秒

現在我想這個值與當前時間和差異比較應該小於180秒... 這意味着用戶最後更新在3分鐘內。

我曾嘗試:

$statement = $conn->prepare('SELECT * FROM users WHERE NOW() - updatedTime < 180 AND visibility = 1 AND linkedInId = :linkedInId'); 
$statement->bindParam(':linkedInId', $linkedInId, PDO::PARAM_INT); 
$statement->execute(); 
if(($row = $statement->fetch(PDO::FETCH_OBJ))) 

然而,這似乎並不能夠按預期工作。

我還應該嘗試什麼?

+0

可以肯定的是,我們是國王關於MySQL或其他DBMS?這是相關的,因爲其他DBMS具有不同的日期處理。 –

回答

0

NOW()返回日期時間,沒有時間戳,做數學上datetime列使用interval關鍵字:

SELECT * FROM users WHERE (NOW() - INTERVAL 3 MINUTE) < updatedTime 
0
SELECT * FROM users WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(updatedTime) < 180 AND visibility = 1 AND linkedInId = :linkedInId 
0

用途爲:

SELECT TIME_TO_SEC(TIMEDIFF(NOW(),updatedTime)); 

或者確切的說:

$statement = $conn->prepare('SELECT * FROM users WHERE TIME_TO_SEC(TIMEDIFF(NOW(),updatedTime)) < 180 AND visibility = 1 AND linkedInId = :linkedInId'); 
     $statement->bindParam(':linkedInId', $linkedInId, PDO::PARAM_INT); 
     $statement->execute(); 
     if(($row = $statement->fetch(PDO::FETCH_OBJ)))