[Oracle] 날짜 함수 - 두 날짜 간의 개월 차이를 구하는 함수(MONTHS_BETWEEN)
MONTHS_BETWEEN 함수는 두개의 날짜 데이터 간의 개월 수 차이를 구할 때 사용합니다.
MONTHS_BETWEEN 함수를 이용하여 직원(EMP) 테이블에서 사원들이 입사한지 얼마나 되었는지 알아 봅시다.
SELECT ENAME, HIREDATE, SYSDATE, MONTHS_BETWEEN(HIREDATE, SYSDATE)
FROM EMP;
아래는 입사일로 부터 오늘까지의 기간(개월)을 조회한 결과 입니다.
입사일에서 오늘까지의 개월수 차이를 구하니, 음수에, 소수점 까지 나오네요. 이것을 보기 좋게 정리해 봅시다.
SELECT ENAME, HIREDATE, SYSDATE,
MONTHS_BETWEEN(SYSDATE, HIREDATE),
TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) AS TOTAL_MONTH,
TRUNC( TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE))/12) AS YEAR,
MOD(TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)),12) AS MONTH
FROM EMP;
너무 복잡해 보이시나요?
- MONTHS_BETWEEN(SYSDATE, HIREDATE) : 입사일로 부터 오늘 까지의 개월 수를 구합니다.
- TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) : 개월수의 소수점 이하는 버리고 정수부분만 취합니다.
- TRUNC( TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE))/12) : 개월수를 년으로 환산하기 위해서 12로 나누고 소수점 이하는 버립니다.
- MOD(TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)),12) : 개월수를 12로 나눈 나머지를 구합니다.
하나씩 생각해 보면 익숙하지 않아서 그렇지 쿼리에서 모르는 부분은 없을 것 같네요.
※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.
※ 예제에서 소수점 이하를 버리는데 사용된 TRUNC 함수가 궁금하신 분은 '[Oracle] 숫자 함수 - 특정 위치에서 버리는 함수(TRUNC) '부분을 참고 하시면 됩니다.
'DataBase' 카테고리의 다른 글
[Oracle] 날짜 함수 - 날짜를 반올림 하는 ROUND 함수 (1) | 2025.08.18 |
---|---|
[Oracle] 날짜 함수 - 돌아오는 요일을 구하는 (NEXT_DAY) (2) | 2025.08.15 |
[Oracle] 날짜 함수 - 몇 개월 이후의 날짜를 구하는 함수(ADD_MONTHS) (2) | 2025.08.13 |
[Oracle] 날짜 함수 - 오늘이 몇일(SYSDATE) (1) | 2025.08.12 |
[Oracle] 숫자 함수 - 가장 가까운 정수 찾기(CEIL, FLOOR) (0) | 2025.08.11 |