오늘은 몰랐으면 내일은 알면 된다

22-11-08 (1) 오라클 함수 - 숫자 함수, 날짜 함수 본문

Java/JAVA 개발자 양성과정

22-11-08 (1) 오라클 함수 - 숫자 함수, 날짜 함수

마스터피쓰 2022. 11. 8. 09:47

[숫자 함수]

[특정 위치에서 반올림 ROUND]

ROUND([숫자(필수)], [반올림 위치(선택)])

반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 반올림한다.

SELECT ROUND(1234.5678),
    ROUND(1234.5678, 0),
    ROUND(1234.5678,1),
    ROUND(1234.5678,2),
    ROUND(1234.5678,-1),
    ROUND(1234.5678, -2)
FROM DUAL;

 

[특정 위치에서 버림 TRUNC]

TRUNC([숫자(필수)], [반올림 위치(선택)])

반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 버린다.

SELECT TRUNC(1234.5678),
    TRUNC(1234.5678, 0),
    TRUNC(1234.5678,1),
    TRUNC(1234.5678,2),
    TRUNC(1234.5678,-1),
    TRUNC(1234.5678, -2)
FROM DUAL;

 

[올림, 내림 CEIL, FLOOR]

: 입력된 숫자와 가까운 큰 정수, 작은 정수를 반환한다.

CEIL([숫자(필수)])
FLOOR([숫자(필수)])
SELECT CEIL(3.14),
    FLOOR(3.14),
    CEIL(-3.14),
    FLOOR(-3.14)
FROM DUAL;

 

[나머지 MOD]

MOD([나눠질 숫자(필수)], [나눌 숫자(필수)])
SELECT MOD(15,6),
    MOD(10,2),
    MOD(11,2)
FROM DUAL;


[날짜 함수]

연산 설명
날짜 데이터 + 숫자 날짜 데이터보다 숫자만큼 일수 이후의 날짜
날짜 데이터 - 숫자 날짜 데이터보다 숫자만큼 일수 이전의 날짜
날짜 데이터 - 날짜 데이터 두 날짜 데이터 간의 일수 차이
날짜 데이터 + 날짜 데이터 지원하지 않음
SELECT SYSDATE AS 오늘,
    SYSDATE-1 AS 어제,
    SYSDATE+1 AS 내일
FROM DUAL;

 

[몇 개월 이후 날짜 ADD_MONTHS]

ADD_MONTHS([날짜 데이터(필수)], [더할 개월 수(정수)(필수)])
SELECT SYSDATE,
    ADD_MONTHS(SYSDATE,3)
FROM DUAL;

윤년 등의 이유로 날짜 계산이 복잡해 질 수 있는데, 10주년 등의 년 계산을 120개월의 월 계산으로 바꿈으로써 계산을 좀 더 간단하게 바꿀 수 있다.

 

[두 날짜 간의 개월 수 차이 MONTHS_BETWEEN]

MONTHS_BETWEEN([날짜 데이터1(필수)], [날짜 데이터2(필수)])
SELECT FIRST_NAME, SYSDATE,
    TRUNC(MONTHS_BETWEEN(HIRE_DATE, SYSDATE), 4),
    TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE), 4),
    TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE))
FROM EMPLOYEES;

비교 날짜의 위치에 따라 양수 또는 음수가 나올 수 있다.

 

[돌아오는 요일 NEXT_DAY, 달의 마지막 날짜 LAST_DAY]

NEXT_DAY([날짜 데이터(필수)], [요일 문자(필수)])

NEXT_DAY는 입력한 날짜 데이터에서 돌아오는 요일의 날짜를 반환한다.

LAST_DAY([날짜 데이터(필수)])

LAST_DAY는 해당 날짜가 속한 달의 마지막 날짜를 반환한다.

작성하고 있는 지금 날짜는 11월 8일이다. 확인해보자.

SELECT SYSDATE,
    NEXT_DAY(SYSDATE, '월요일'),
    LAST_DAY(SYSDATE)
FROM DUAL;