2010-08-13 112 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

相關問題