0

我有一个使用当前时间戳自动更新的表。让列名是“updatedTime”。它给了我们一个值说:

2013-06-02 17: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))) 

然而,这似乎没有按预期工作。

我还应该尝试什么?

4

3 回答 3

0
SELECT * FROM users WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(updatedTime) < 180 AND visibility = 1 AND linkedInId = :linkedInId
于 2013-06-02T17:55:36.263 回答
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))) 
于 2013-06-02T17:56:08.303 回答
0

NOW()返回日期时间,而不是时间戳,使用interval关键字对日期时间列进行数学运算:

SELECT * FROM users WHERE (NOW() - INTERVAL 3 MINUTE) <  updatedTime
于 2013-06-02T17:58:25.443 回答