2011-09-21 3 views

답변

13
SELECT * FROM table1 
WHERE mydate BETWEEN DATE_SUB(now(), INTERVAL 3 MONTH) AND now() 

또는 당신은 그러나 mydate에 대한 인덱스를 사용할 수 없기 때문에,이 후자의 버전은 훨씬 느리게 실행됩니다

SELECT * FROM table1 
WHERE MONTH(mydate) BETWEEN MONTH(DATE_SUB(now(), INTERVAL 3 MONTH)) AND MONTH(now()) 
    AND YEAR(mydate) BETWEEN YEAR(DATE_SUB(now(), INTERVAL 3 MONTH)) AND YEAR(now()) 

개월 이내 체류하려는 경우.

+0

현재 날짜 = 01/01/2012 인 경우 솔루션이 정상적으로 작동합니다. 하지만 내가 21/09/2011으로 현재 날짜를 바꿀 때, 나는 0 결과를 얻었다. – softboxkid

+0

날짜는 yyyy-mm-dd 형식이어야하며 '2011-09-21'을 날짜로 사용하십시오. – Johan

+0

이제 첫 번째 해결 방법을 사용했습니다. 하지만 그 해결책은 항상 3 대신 2 행을 반환 왜? 이미 날짜를 yyyy-mm-dd로 변경합니다. – softboxkid

관련 문제