당신은 DOB하지 계산 된 필드를 기준으로 필터링을 수행해야합니다 - 허용 대답에 비추어
SELECT name, DOB
FROM animal
WHERE colour = 'Brown'
AND DOB > (CURRENT_DATE - INTERVAL 3 YEAR);
편집을 내 대답을 설명 할 필요를 느낀다. 사용 - 그것은 나이가 쓸모 DOB 열에 모든 인덱스 렌더링 비교를 수행하기 위해 계산 될 필요로 나이를 필터링하는 방법으로서
where colour = 'Brown' and truncate(datediff(sysdate(),DOB)/365.25,0) <=2;
은 효율적이지 않다. 반면, 다음, 적용 가능한 인덱스를 사용할 수 있습니다 직접 DOB 필드 필터링 -
DOB > (CURRENT_DATE - INTERVAL 3 YEAR);
이 단순히 말한다 "를 생년월일 오늘 마이너스 삼년보다 더 크다."
이
'2009-03-22' > ('2012-03-22' - INTERVAL 3 YEAR)
차례가되는 - - 그래서 '2009-09-08'의 탄생과 '2012-03-22'의 현재 날짜의 날짜로 평가됩니다
'2009-03-22' > '2009-03-22'
평가하는 그 사람은 이제 3 (오늘)이므로 거짓으로.
차례가된다
'2009-03-23' > ('2012-03-22' - INTERVAL 3 YEAR)
- - true로 평가
'2009-03-23' > '2009-03-22'
을 사람의 생일이 내일이면 반면, ('2009-03-23')은 여전히 2입니다.
을 할 경우에 선택 조항이 별칭을 사용할 수 없습니다, 그것은 훨씬 쉽게 될 것입니다. –