2010-08-13 8 views

답변

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

+0

@krio : 업데이트 할 행 -'code' 값을 "myCode"로 설정 했습니까? –

+0

예, 실제로 그것을 제거하고 테스트를 위해 사용하고 있습니다. SELECT * 상태에서 DATE_SUB (NOW(), INTERVAL 50 MINUTE) 사이에 'stamp_updated'가 입력되었습니다. 및 NOW() – krx

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

+1 : 나는 심지어 20 초 더 빨랐다. –

3

왜 between 구조체를 사용하는지 잘 모르십니까? MySQL은 날짜에 논리 연산자를 사용할 수 있으며 일반적으로 훨씬 빠릅니다. 나는 이것을 사용할 것입니다 :

+1

내 자신의 db에 대한 비슷한 쿼리에 대해 이것은 적어도 10 % 더 빠르며 그 사이를 사용했다. –