months_between(날짜1, 날짜2);
- 두 날짜 사이의 개월 수를 반환해야 한다.
- 날짜 1이 더 최근의 날짜여야 한다.
(아니면 음수가 나온다)
select MONTHS_BETWEEN(sysdate, to_date('2002/10/10', 'YYYY/mm/dd')) from dual;
/*
근무 개월 수가 60개월 이상인 직원들에게 특별 휴가를 준다.
대상자의 사원번호, 사원이름, 부서명, 입사일, 근무개월
주민번호를 출력하시오
주민번호는 14자리를 잡아서 출력하되 성별까지만 출력하고
오른쪽 빈 칸은 * 로 표시한다.
근무 개월 수가 높은 순으로 출력하고 동일할 떄는 이름 순으로 출력한다.
*/
select eno, ename, (
select dname from dept d
where d.dno = e.dno
) dname, to_char(hiredate, 'YYYY-MM-dd') 입사일,
round(MONTHS_BETWEEN(SYSDATE,HIREDATE),1) 근무개월수,
rpad(substr(jumin, 1, 8), 14, '*') jumin
from emp e
where MONTHS_BETWEEN(SYSDATE,HIREDATE) >= 60
order by 근무개월수 desc, ename;