2011-09-23 2 views
0

지금부터 1 분 후에 데이터 열이있는 테이블에서 해당 행을 선택하려고합니다. 나는 다음과 같은 방법으로 그것을 수행하려고 :MySQL에서 date_add와 interval은 어떻게 작동합니까?

SELECT datetime FROM my_table 
WHERE datetime > date_add(curdate() , INTERVAL -1 MINUTE) 

이 내가 무엇을 얻을 수 있습니다 :

2011-09-23 02:39:53 
2011-09-23 08:10:07 

뭔가 그와 분명히 잘못된 것입니다. 왜 아무도 알지 못해?

은 정말 이상한 보이는

을 추가했습니다. 내가 interval -1 hour을 사용하면 4 시간에서 7 시간 정도되는 결과를 얻었지만, 나는 14 시간보다 오래된 결과를 필터링합니다. 그게 어떻게 가능해? 지금 과거에 한 분에서

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    NOW() AND 
    DATE_ADD(NOW(), INTERVAL 1 MINUTE) 

: 미래에

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND 
    DATE_ADD(NOW(), INTERVAL 1 MINUTE) 

지금부터 하나 분 :

+0

'curdate()'대신'now()'를 사용하십시오. – Johan

답변

5

과거 일분에서 앞으로 1 분

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND 
    NOW() 
+0

첫 번째 쿼리는 과거와 앞으로 1 분 안에 그리고 앞으로는 미래로. 두 번째 쿼리는 앞으로 1 분 이내에 결과를 반환해야합니다. – Roman

+0

@Roman : 맞습니다. 이게 당신이 필요로 하는게 아닌가요? – Marco

+0

@Roman : 모든 사례를 다루기 위해 내 게시물을 편집했습니다 ... 귀하의 질문을 이해하지 못했다고 생각합니다 ... – Marco