Programming/SQL
[Oracle] 10. 다양한 날짜함수(ROUND, TRUNC, MONTH_BETWEEN, ADD_MONTHS, NEXT_DAY)
고막고막
2019. 4. 23. 11:55
ROUND | 형식에 맞추어 반올림한 날짜를 반환한다 ROUND(날짜, 형식) ROUND(sysdate, 'DD') → 2019/04/23 |
TRUNC | 형식에 맞추어 절삭한 날짜를 반환한다 TRUNC(날짜 형식) TRUNC(sysdate, 'YYYY') → 2019/01/01 |
MONTH_BETWEEN | 두 날짜간의 기간을 월 수로 계산한다 MONTH_BETWEEN(날짜1, 날짜2) MONTH_BETWEEN('2011/07/01', '2011/08/01') → -1 MONTH_BETWEEN('2011/08/01', '2011/07/01') → 1 |
ADD_MONTHS | 날짜에 n달을 더한 날짜를 계산하다 ADD_MONTH(날짜, n) ADD_MONTH('2011/07/01', 23) → 2013/06/01 |
NEXT_DAY | 날짜 이후 지정된 요일에 해당하는 날짜 계산 NEXT_DAY(날짜, 요일) NEXT_DAY('2011/07/14', '일요일') → 2011/07/17 |
예제1) 김연아가 오늘까지 일한 일수를 검색
SELECT TRUNC(sysdate, 'DD') - TRUNC(sysdate, 'DD')+1 DAY
// 마이너스 연산을 하면 입사일은 근무일수에서 빠져버림으로 1을 더함
FROM emp WHERE ename='김연아';
예제2) 20번 부서 직원들이 현재까지 근무한 개월 수를 검색한다
SELECT dno 부서번호, eno 사번, ename 사원명, hdate 입사일,
TRUNC(MONTHS_BETWEEN(sysdate, hdate)) 근무개월
FROM emp WHERE dno=20;
예제3) 20번 부서원들이 입사 100일째 되는 날과 10년째 되는 날을 검색
SELECT dno 부서번호, eno 사번, ename 사원명, hdate 입사일,
hdate+100 "입사 후 100일", ADD_MONTHS(hdate, 120) "입사 후 10년"
FROM emp WHERE dno=20;