프로그램 개발 중에 연령대를 처리 할 일이 생겨서 고민했던 내용입니다.
다른 분들에게도 도움이 되었으면 합니다.
조회 결과에 연령대를 처리하는 경우는 case 문을 사용해서 작성하면 되지만
조건에서 연령대를 처리해야 하는 경우가 발생하였습니다.
일단 회원 마스터에 생년월일 컬럼은 당연히 있겠죠? 보통 varchar2 8자리로 만들어서 yyyymmdd 를 입력합니다.
조건에서 처리하기 때문에 컬럼 값을 변경하는 인덱스를 탈 수가 없어서 그대로 유지를 했습니다.
처음 생각했던 오라클 함수는 add_months 로 10대를 구하려고 하면 sysdate에 -240을 하면 20년전과 -120으로 10년전 사이로 구하면 10대를 가져오겠구나 생각을 했죠.
그러다가 하나 더 찾은 방법이 interval 이라는 방법이 있어서 이걸 사용했습니다.
select sysdate - interval '10' year from daul
결과는 10년전의 기간을 가져 옵니다.
결과 쿼리를 보자면
select name
from master
where birthday between to_char(sysdate-interval '19' year,'yyyymmdd') and to_char(sysdate-interval '10' year,'yyyymmdd')
으로 처리하였습니다.
많은 도움이 되었으면 합니다. 감사합니다.