Oracle에서 사용할 수 있는 날짜 함수와 시간 함수들은 다음과 같습니다.
1. 날짜 함수, 시간 함수
함수명 | 양식 | 기능 설명 |
SYSDATE SYSTIMESTAMP |
SYSDATE SYSTIMESTAMP |
현재 일자와 시간을 DATE형으로 반환 현재 TIMESTAMP를 반환 |
CURRENT_DATE CURRENT_TIMESTAMP |
CURRENT_DATE CURRENT_TIMESTAMP |
현재 세션의 일자와 시간을 DATE형으로 반환 현재 세션의 TIMESTAMP를 반환 |
ADD_MONTHS | ADD_MONTHS(date, int) | 날짜(date)에 숫자(int)만큼의 월을 더한 날짜를 반환 |
EXTRACT | EXTRACT(format FROM DATE '날짜') | 날짜에서 형식(format)의 값을 구한다 형식: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND |
LAST_DAY | LAST_DAY(date) | 날짜(date)를 기준으로 해당 월의 마지막 일자를 반환 |
NEXT_DAY | NEXT_DAY(date, weekstr) | 날짜(date)를 기준으로 앞으로 다가올 날짜의 요일(weekstr)에 명시한 요일의 날짜를 반환 weekstr: 일요일~토요일 NLS 기준으로 동작, 영어일 경우 SUNDAY~MONDAY |
MONTHS_BETWEEN | MONTHS_BETWEEN(date1, date2) | 두 날짜 사이의 개월수를 반환, 앞의 날짜가 뒤의 날짜보다 빠르다면 음수를 반환 |
ROUND TRUNK |
ROUND(date, format) TRUNK(date, format) |
형식(format)에 따라 반올림한 날짜를 반환 형식(format)에 따라 버림 한 날짜를 반환 |
1.1 SYSDATE, SYSTIMESTAMP
SYSDATE : 현재 일자와 시간을 DATE형으로 반환
SYSTIMESTAMP : 현재 TIMESTAMP를 반환
SELECT SYSDATE, SYSTIMESTAMP FROM DUAL;
---------- ------------------------------------
2022/04/28 22/04/28 12:36:57.381000000 +09:00
1.2 CURRENT_DATE, CURRENT_TIMESTAMP
CURRENT_DATE : 현재 세션의 일자와 시간을 DATE형으로 반환
CURRENT_TIMESTAMP : 현재 세션의 TIMESTAMP를 반환
SESSTIONTIMEZONE : 현재 세션의 TIMEZONE을 반환
SYSDATE, SYSTIMESTAMP와 유사하지만 CURRENT는 현재 세션의 DATE, TIMESTAMP를 보여주고, SYS는 시스템의 DATE, TIMESTAMP를 보여준다.
SELECT SESSIONTIMEZONE, SYSTIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;
--------------- ------- ------------
[Asia/Seoul] [22/05/09 18:15:10.450000000 +09:00]
[22/05/09 18:15:10.450000000 +09:00]
-- TIME ZONE을 홍콩으로 변경
ALTER SESSION SET TIME_ZONE = '+8:0';
-- 세션에 따라 시간이 1시간 차이가 남
SELECT SESSIONTIMEZONE, SYSDATE, CURRENT_DATE FROM DUAL;
--------------- ------- ------------
[Asia/Seoul] [22/05/09 18:15:10.450000000 +09:00]
[22/05/09 17:15:10.450000000 +08:00]
1.3 ADD_MONTHS(date, int)
ADD_MONTHS(date, int) : 날짜(date)에 숫자(int)만큼의 월을 더한 날짜를 반환
SELECT ADD_MONTHS(SYSDATE, 1), ADD_MONTHS(SYSDATE, -1) FROM DUAL;
---------------------- -----------------------
2022/05/28 2022/03/28
-- 월의 마지막 날짜인 경우 그 달의 마지막 날짜로 변경됨
SELECT ADD_MONTHS('20220331', 1), ADD_MONTHS('20220331', -1) FROM DUAL;
------------------------- --------------------------
2022/04/30 2022/02/28
1.4 EXTRACT(format FROM DATE '날짜')
EXTRACT(format FROM DATE '날짜') : 날짜에서 형식(format)의 값을 구한다
형식: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
SELECT EXTRACT(YEAR FROM SYSDATE), EXTRACT(YEAR FROM DATE '2020-01-01') FROM DUAL;
-------------------------- ------------------------------------
[2022] [2020]
SELECT EXTRACT(MINUTE FROM SYSTIMESTAMP), EXTRACT(SECOND FROM SYSTIMESTAMP) FROM DUAL;
--------------------------------- ---------------------------------
[27] [46.758]
1.5 LAST_DAY(date)
LAST_DAY(date) : 날짜(date)를 기준으로 해당 월의 마지막 일자를 반환
SELECT LAST_DAY(SYSDATE), LAST_DAY('2022-05-01') FROM DUAL;
----------------- ----------------------
2022/04/30 2022/05/31
1.6 NEXT_DAY(date, weekstr)
NEXT_DAY(date, weekstr) : 날짜(date)를 기준으로 앞으로 다가올 날짜의 요일(weekstr)에 명시한 요일의 날짜를 반환
weekstr: 일요일~토요일 NLS 기준으로 동작, 영어일 경우 SUNDAY~MONDAY
SELECT NEXT_DAY(SYSDATE, '월요일'), NEXT_DAY(SYSDATE, '화요일') FROM DUAL;
--------------------------- ---------------------------
2022-05-02 2022-05-03
1.7 MONTHS_BETWEEN(date1, date2)
MONTHS_BETWEEN(date1, date2) : 두 날짜 사이의 개월 수를 반환, 앞의 날짜가 뒤의 날짜보다 빠르다면 음수를 반환
SELECT MONTHS_BETWEEN('2022-09-08', '2022-03-08') FROM DUAL;
------------------------------------------
6
SELECT MONTHS_BETWEEN('2022-03-08', '2022-09-08') FROM DUAL;
------------------------------------------
-6
SELECT MONTHS_BETWEEN('2022-09-08', '2022-03-29') FROM DUAL;
------------------------------------------
5.32258064516129032258064516129032258065
1.8 ROUND(date, format), TRUNK(date, format)
ROUND(date, format) : 형식(format)에 따라 반올림한 날짜를 반환
TRUNK(date, format) : 형식(format)에 따라 버림 한 날짜를 반환
SELECT SYSDATE, ROUND(SYSDATE, 'month'), TRUNC(SYSDATE, 'month') FROM DUAL;
------- ----------------------- ----------------------
2022/04/28 2022/05/01 2022/04/01
SELECT ROUND(TO_DATE('2022-04-10'), 'month') FROM DUAL;
-------------------------------------
2022/04/01
참고
https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF20033
'Dev. Handbook > SQL, Oracle, MariaDB' 카테고리의 다른 글
[Oracle] 내장함수 : 비교함수, 디코딩 함수 (0) | 2022.05.22 |
---|---|
[Oracle] 내장 함수 : NULL 관련 함수 (1) | 2022.05.14 |
[Oracle] 내장 함수 : 형 변환 함수 (0) | 2022.05.13 |
[Oracle] 내장 함수 : 숫자 함수, 수학 함수 (0) | 2022.05.02 |
[Oracle] 내장 함수 : 문자열 함수 일람 (0) | 2022.04.28 |
댓글