RDB/Oracle

[ORACLE] 날짜함수(ADD_MONTHS, MONTHS_BETWEEN, SYSDATE)

씨네 2021. 12. 27. 12:11
728x90

주요 단일 행 함수 중 지난번 포스팅에서는 문자 함수만 다루었었습니다.

이번에는 문자열 함수 이외의 숫자 함수와 날짜 함수를 알아보려 합니다.

1. ROUND / TRUNC

ROUND / TRUNC(컬럼 or 숫자[, 소수점 자리지정])

- 지정한 자리수에서 반올림(ROUND), 버림(TRUNC)

-자리를 지정하는 값은 반드시 정수값 사용( 생략하면 0으로 인식 )

> 0 : 소수점 이하 자리

< 0 : 소수점 이상 자리

SELECT ROUND(123.456) FROM DUAL;
SELECT ROUND(123.456, 1) FROM DUAL;
SELECT TRUNC(123.456, 1) FROM DUAL;
SELECT TRUNC(123.456, -1) FROM DUAL;

2. CEIL / FLOOR

CEIL() - 올림

FLOOR() - 버림

SELECT CEIL(123.456) FROM DUAL;
SELECT FLOOR(123.456) FROM DUAL;
SELECT CEIL(SAL/1000) FROM EMP;
SELECT FLOOR(SAL/1000) FROM EMP;

3. ADD_MONTHS

ADD_MONTHS(날짜, 더하려는 개월 수)

- 지정한 날짜부터 개월 수를 더한 날짜 반환

--Q) 입사한지 20년이 되는 달을 구하자.

SELECT ENAME, HIREDATE, ADD_MONTHS(HIREDATE, 240) FROM EMP;

4. MONTHS_BETWEEN

MONTHS_BETWEEN(날짜1, 날짜2)

-지정한 두 날짜 사이의 월 수를 반환

날짜1 > 날짜2 -> 양수 반환

날짜1 < 날짜2 -> 음수 반환

SELECT MONTHS_BETWEEN(HIREDATE, SYSDATE) FROM EMP;

5. SYSDATE

SYSDATE -> 오늘날짜

SELECT SYSDATE FROM DUAL;

--Q)00년 1월 1일을 기준으로, 10년 이상 근무한 사람의 이름, 직업, 입사일, 근무년수를 구하자.

SELECT ENAME, JOB, HIREDATE,
TRUNC(MONTHS_BETWEEN('2000/01/01', HIREDATE)/12)
FROM EMP WHERE MONTHS_BETWEEN('2000/01/01', HIREDATE) > 120;
728x90