핵심 원리: MONTHS_BETWEEN 함수
MONTHS_BETWEEN
함수는 두 날짜 사이의 개월 수를 계산하여 반환합니다. 이 함수는 날짜 간 차이를 월 단위로 구할 때 유용합니다.
기본 문법:
MONTHS_BETWEEN(date1, date2)
date1
: 비교할 첫 번째 날짜 (기준 날짜).date2
: 비교할 두 번째 날짜.
예시:
MONTHS_BETWEEN(SYSDATE, hiredate)
: 현재 날짜와 사원 입사일(hiredate) 사이의 개월 수를 반환합니다.
연습 문제
- 2024년 1월 1일부터 2023년 7월 1일까지의 개월 수를 구하세요.
- 사원 테이블에서 각 사원의 입사일로부터 현재까지 근무한 개월 수를 계산하여 출력하세요.
연습 문제 해답
MONTHS_BETWEEN(TO_DATE('2024-01-01', 'YYYY-MM-DD'), TO_DATE('2023-07-01', 'YYYY-MM-DD'))
를 사용하면 결과는 6개월입니다.
SELECT MONTHS_BETWEEN(TO_DATE('2024-01-01', 'YYYY-MM-DD'), TO_DATE('2023-07-01', 'YYYY-MM-DD')) AS months_diff
FROM dual;
- 각 사원의 입사일로부터 현재까지 근무한 개월 수를 계산하는 쿼리는 다음과 같습니다:
SELECT ename, MONTHS_BETWEEN(SYSDATE, hiredate) AS months_worked
FROM emp;
응용 문제
- 특정 사원이 입사한 날짜와 현재 날짜 사이의 개월 수를 계산하고, 그 개월 수가 120개월 이상인 사원들만 출력하세요.
응용 문제 해답
SELECT ename, MONTHS_BETWEEN(SYSDATE, hiredate) AS months_worked FROM emp WHERE MONTHS_BETWEEN(SYSDATE, hiredate) >= 120;
- 이 쿼리는 사원이 120개월 이상 근무한 경우만 출력합니다.
실무 유형 문제
- 특정 사원이 퇴사한 날짜와 입사한 날짜 사이의 개월 수를 계산하여 퇴사자의 근무 기간을 분석하세요.
실무 유형 문제 해답
SELECT ename, MONTHS_BETWEEN(termination_date, hiredate) AS tenure_months
FROM emp
WHERE termination_date IS NOT NULL;
이 쿼리는 퇴사한 사원들의 근무 기간을 개월 수로 계산하여 출력합니다.