我有一个使用当前时间戳自动更新的表。让列名称为“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)))
然而,这似乎并没有像预期的那样发挥作用。
我还应该尝试什么?
答案 0 :(得分:0)
SELECT * FROM users WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(updatedTime) < 180 AND visibility = 1 AND linkedInId = :linkedInId
答案 1 :(得分: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)))
答案 2 :(得分:0)
NOW()
使用interval
关键字返回日期时间而不是时间戳来对datetime列进行数学运算:
SELECT * FROM users WHERE (NOW() - INTERVAL 3 MINUTE) < updatedTime