craftmanager
#24 내장 함수(Sing-Row Functions) - Datetime Functions (날짜 함수) 본문
#24 내장 함수(Sing-Row Functions) - Datetime Functions (날짜 함수)
craftmanager 2023. 12. 26. 10:31날짜 함수는 오라클 날짜에 대해 연산을 한다.
날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다.
SYSDATE
SYSDATE 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.
최소단위 = 1초
-- SYSDTE 예제
SELECT TO_CHAR(SYSDATE,'RRRR-MM-DD HH24:MI:SS') "지금시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1,'RRRR-MM-DD HH24:MI:SS') "하루전지금시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1/24/60/10,'RRRR-MM-DD HH24:MI:SS') "6초전시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),'RRRR-MM-DD HH24:MI:SS') "5시간 30분 10초전"
FROM DUAL ;
SYSTIMESTAMP
SYSTIMESTAMP 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.
최소단위 = 10억분의 1초 (10의 9승)
-- SYSTIMESTAMP 예제
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF3')
FROM DUAL ;
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF9')
FROM DUAL ;
SELECT TO_CHAR(SYSTIMESTAMP -1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
FROM DUAL ;
SELECT TO_CHAR(SYSTIMESTAMP -1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
FROM DUAL ;
ADD_MONTHS(a, b)
ADD_MONTHS 함수는 a의 날짜에 b의 달을 더한 값을 반환 한다.
-- SYSDATE를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'RRRR-MM-DD') "date"
FROM DUAL;
-- TIMESTAMP를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3),'RRRR-MM-DD') "date"
FROM DUAL;
MONTHS_BETWEEN(a1, a2)
MONTHS_BETWEEN은 a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 한다.
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(TO_DATE('2010-06-05','RRRR-MM-DD'),
TO_DATE('2010-05-01','RRRR-MM-DD')) "month"
FROM DUAL;
-- 두 일자 사이에 일짜 수를 조회하는 예제
SELECT TO_DATE('2010-06-05','RRRR-MM-DD') -
TO_DATE('2010-05-01','RRRR-MM-DD') "Day"
FROM DUAL;
LAST_DAY(d)
LAST_DAY 함수는 달의 마지막 날의 날짜를 반환 한다
-- LAST_DAY예제
SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday
FROM DUAL;
TODAY LASTDAY
-------- --------
11/05/28 11/05/31
NEXT_DAY(d, c1)
NEXT_DAY는 돌아오는 명시된 요일의 일자를 반환한다.
요일은 1(일) ~ 7(토)로 입력하면 된다.
-- NEXT_DAY예제
SELECT NEXT_DAY(SYSDATE, 4) "Next Wednesday"
FROM DUAL;
Next Wed
--------
11/06/01
-- NEXT_DAY예제
SELECT NEXT_DAY(TO_DATE('20110501','RRRRMMDD'), 2) "5월 첫째주 월요일"
FROM DUAL;
5월 첫째
--------
11/05/02
ROUND(d[,F])
ROUND 함수는 F에 지정된 단위로 반올림 한다. F가 연도라면 연도 단위로 반올림 한다. F가 생략되면 날짜를 가장 가까운 날짜로 반올림한다.
-- ROUND예제
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), 'MONTH'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), 'DD'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS')),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
-- 실행 결과
2012-01-01 00:00:00
2011-09-01 00:00:00
2011-09-12 00:00:00
2011-09-12 00:00:00
TRUNC(d[,F])
TRUNC 함수는 F에 지정된 단위로 절삭 한다
-- TRUNC예제
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), 'YEAR'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), MONTH'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS'), 'DD'),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS')),
'RRRR-MM-DD HH24:MI:SS')
FROM DUAL;
-- 실행 결과
2011-01-01 00:00:00
2011-09-01 00:00:00
2011-09-11 00:00:00
2011-09-11 00:00:00
날짜에 대한 산술 연산
연 산결과치사용목적
| 연산 | 결과치 | 사용목적 |
| 날짜 + 숫자 | 날짜 | 특정한 날로부터 며칠 후의 날짜 계산 |
| 날짜 - 숫자 | 날짜 | 특정한 날로부터 며칠 전의 날짜 계산 |
| 날짜 - 날짜 | 숫자 | 두 날짜 사이의 차이를 숫자로 계산 |
Oracle Datetime Functions
ADD_MONTHS
CURRENT_DATE
CURRENT_TIMESTAMP
DBTIMEZONE
EXTRACT (datetime)
FROM_TZ
LAST_DAY
LOCALTIMESTAMP
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
NUMTODSINTERVAL
NUMTOYMINTERVAL
ROUND (date)
SESSIONTIMEZONE
SYS_EXTRACT_UTC
SYSDATE
SYSTIMESTAMP
TO_CHAR (datetime)
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_DSINTERVAL
TO_YMINTERVAL
TRUNC (date)
TZ_OFFSET
출처: http://www.gurubee.net/lecture/1026
'ORACLE SQL' 카테고리의 다른 글
| #26 내장 함수(Sing-Row Functions) - 기타 함수들 (0) | 2023.12.26 |
|---|---|
| #25 내장 함수(Sing-Row Functions) - Conversion Functions (변환 함수) (2) | 2023.12.26 |
| #23 내장 함수(Sing-Row Functions) - Character Functions (문자형 함수) (1) | 2023.12.26 |
| #22 내장 함수(Sing-Row Functions) - Numeric Functions (숫자형 함수) (1) | 2023.12.26 |
| #21 데이터 조작어(DML) - Commit과 Rollback 예 (1) | 2023.12.26 |