2010-08-13 115 views
4

我有一个时间戳列,可以在插入/更新时自动更新。MySQL选择现在和10分钟之前的时间戳列的行

我想获得在最近10分钟内更新的行。

SELECT 
    * 
FROM 
    status 
WHERE 
    code='myCode' 
AND 
    'stamp_updated' 
    BETWEEN 
    NOW() 
    AND 
    DATE_ADD(NOW() , INTERVAL - 10 MINUTE) 
ORDER BY 
    stamp_updated DESC 
LIMIT 1 

回答

19

用途:

SELECT * 
    FROM status 
    WHERE code = 'myCode' 
    AND `stamp_updated` BETWEEN DATE_SUB(NOW() , INTERVAL 10 MINUTE) 
          AND NOW() 
ORDER BY stamp_updated DESC 
    LIMIT 1 

订单在运营商之间的事 - 你弄错了。

+0

由于某种原因,我不断收到空结果即使我将更新的行具有当前时间..你可以检查,看看是否也许有些事情失踪? – krx 2010-08-13 22:32:53

+0

@krio:你正在更新的这些行是他们的'code'值设置为“myCode”? – 2010-08-13 22:35:48

+0

是的,我实际上删除,只是使用(测试):选择* 从状态 'stamp_updated'在DATE_SUB(NOW(),INTERVAL 50分钟)之间 AND NOW() – krx 2010-08-13 22:38:17

4
... 'stamp_updated' BETWEEN NOW() - INTERVAL 10 MINUTE AND NOW() ... 
+0

+1:我甚至没有快20秒,你的 – 2010-08-13 22:48:45

3

不确定为什么要使用between构造。 MySQL可以在日期上使用逻辑运算符,并且通常显着更快。我会用这样的:

+1

对于我自己的db类似的查询,这至少比使用之间快10%。 – 2015-01-14 19:14:11

相关问题