날짜를 조작할 수 있는 함수이다
SYSDATE
현재 데이터베이스 서버의 날짜 및 시간을 반환해준다 (시간은 보이지 않지만 포함되어 있다)
날짜를 이용한 산술 연산식
연산 | 결과 | 설명 |
날짜 + 숫자 | 날짜 | 날짜에 일 수를 더한다 |
날짜 - 숫자 | 날짜 | 날짜에서 일 수를 뺀다 |
날짜 - 날짜 | 일 수 | 한 날짜를 다른 날짜에서 뺀다 |
날짜 + 숫자/24 | 날짜 | 날짜에 시간 수를 더한다 |
(날짜 - 날짜)/7 | 몇 주 | 몇 주가 지났는 지 계산 |
MONTHS_BETWEEN
두 날짜 간의 월 수를 구한다
MONTHS_BETWEEN('01-SEP-95', '11-JAN-94') => 19.6774194
-- 보이지 않는 서버의 시간도 포함되어 있어 소수점으로 표현 되었음
ADD_MONTHS
월을 더하거나 뺀다
ADD_MONTHS('31-JAN-96', 1) => '29-FEB-96'
-- 1월에서 1월을 더해 2월 말 일로 표현
NEXT_DAY
돌아오는 요일의 날짜를 구한다
NEXT_DAY('01-SEP-95', 'FRIDAY') => '08-SEP-95'
-- 돌아오는 다음 금요일은 95년 9월 8일이다
LAST_DAY
월 말일이 몇 일인지 알 수 있다
LAST_DAY('01-FEB-95') => '28-FEB-95'
-- 이번 달(1월)의 말 일은 28일로 표현이 되었다
ROUND
하위 단계(년도 > 월 > 일 > 시간) 순서를 기준으로 반올림한다, (Ex : Month -> DD를 기준으로 Month를 반올림)
-- SYSDATE = '25-JUL-03' 이라고 가정했을 때
ROUND(SYSDATE, 'MONTH') => '01-AUG-03'
-- 월을 반올림 후 일은 제일 가까운 1일로 표현
ROUND(SYSDATE, 'YEAR') => '01-JAN-04'
-- 년도를 반올림 후 월/일을 제일 가까운 1월/일로 표현
TRUNC
하위 단계(년도 > 월 > 일 > 시간) 순서를 기준으로 절단한다, (Ex : Year -> 월, 일, 시간 초기화)
-- SYSDATE = '25-JUL-03' 이라고 가정했을 때
TRUNC(SYSDATE, 'MONTH') => '01-JUL-03'
-- 월 아래로 절단하여 일은 제일 가까운 1일로 표현
TRUNC(SYSDATE, 'YEAR') => '01-JAN-03'
-- 년도 아래로 절단하여 월/일을 제일 가까운 1월/일로 표현
TO_CHAR 활용하여 임의의 날짜 형식으로 이용하기
TO_CHAR(SYSDATE, 'format_model')
TO_CHAR(SYSDATE, 'YYYY/MM/DD') => 2020/02/12
'format_model'은 아래 형식 요소를 따른다
요소 | 결과 (2020년 2월 12일 수요일이라고 가정) |
YYYY | 2020 |
YEAR | TWENTY TWENTY |
MM | 02 |
MONTH | 2월 (January) |
MON | JAN |
DY | 수 (Wed) |
DAY | 수요일 (Wednesday) |
DD | 12 |
'BackEnd > DataBase - Oracle' 카테고리의 다른 글
[Oracle] 그룹으로 묶는 GROUP BY절과 HAVING절 (0) | 2020.02.13 |
---|---|
[Oracle] 변환 함수 (0) | 2020.02.12 |
[Oracle] 숫자 함수 (0) | 2020.02.12 |
[Oracle] 문자 함수 (0) | 2020.02.12 |
[Oracle] 정렬하는 ORDER BY절 (0) | 2020.02.12 |