반응형
오라클 날짜 함수입니다.
날짜 함수는 NUMBER형 or DATE형을 Return 합니다.
오라클 날짜 함수는 연산이 가능하면 1이 [하루 / 24시간]을 의미합니다.
날짜 함수 연산
연 산 | 결과 Type | 설명 |
날짜 + 숫자 | 날짜 | 특정한 날로 부터 숫자를 더한(며칠 후) 날짜 계산 |
날짜 - 숫자 | 날짜 | 특정한 날로 부터 숫자를 뺀(며칠 전) 날짜 계산 |
날짜 - 날짜 | 숫자 | 두 날짜 사이의 차 |
SYSDATE
SYSDATE 함수는 현재 일자와 시간을 반환합니다.
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "현재시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1,'YYYY-MM-DD HH24:MI:SS') AS "하루전 현재시간"
FROM DUAL ;
SELECT TO_CHAR(SYSDATE-1/24,'YYYY-MM-DD HH24:MI:SS') AS "1시간전 시간"
FROM DUAL ;
SYSTIMESTAMP
Systimestamp 함수는 TIME STAMP 값을 반환하며
10억 분의 1초까지 표현할 수 있습니다.
-- 현재 날짜를 3자리 밀리 SEC 까지 구함
SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF3')
FROM DUAL ;
-- 현재 날짜를 9자리 밀리 SEC 까지 구함
SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF9')
FROM DUAL ;
-- 1시간전 시간
SELECT TO_CHAR(SYSTIMESTAMP -1/24,'RRRR-MM-DD HH24:MI:SS')
FROM DUAL ;
ADD_MONTHS(m1, m2)
ADD_MONTHS 함수는 m1의 날짜에 m2의 달을 더한 값을 반환합니다.
-- SYSDATE를 이용한 현재 날짜에서 3개월 후
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'YYYY-MM-DD') "3개월 후"
FROM DUAL;
-- SYSDATE를 이용한 현재 날짜에서 3개월 전
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-3),'YYYY-MM-DD') "3개월 전"
FROM DUAL;
-- TIMESTAMP를 이용한 현재 날짜에서 2개월 후
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP, 2),'YYYY-MM-DD') "2개월 후"
FROM DUAL;
-- TIMESTAMP를 이용한 현재 날짜에서 2개월 전
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP, -2),'YYYY-MM-DD') "2개월 전"
FROM DUAL;
MONTHS_BETWEEN(m1, m2)
m1과 m2 사이의 달의 수를 Number형으로 반환합니다.
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, 5)) "Month"
FROM DUAL;
결과
----------------
-5
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, -7)) "Month"
FROM DUAL;
결과
----------------
7
LAST_DAY(d)
d 날의 마지막 날짜를 반환한다.
-- LAST_DAY
SELECT SYSDATE AS "현재 시간",
LAST_DAY(SYSDATE) AS "이달 마지막날 현재 시간"
FROM DUAL;
NEXT_DAY(d, n)
d 날짜에서 명시된(n) 다음 요일을 반환한다.
1(일) / 2(월) / 3(화) / 4(수) / 5(목) / 6(금) / 7(토)
-- NEXT_DAY
SELECT NEXT_DAY(SYSDATE, 3) "다음 화요일 현재 시간"
FROM DUAL;
-- NEXT_DAY
SELECT NEXT_DAY(SYSDATE, 6) "다음 금요일 현재 시간"
FROM DUAL;
ROUND(d[,F])
Round 함수는 반올림한다.
F가 연도라면 연도 단위로 달이면 달로 일이면 일 단위로 반올림한다.
F가 생략되면 날짜를 가장 가까운 날짜로 반올림한다
-- 년 반올림
-- 2020-01-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 년 반올림
-- 2021-01-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-07-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 달 반올림
-- 2020-03-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-15 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 달 반올림
-- 2020-04-01 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 일 반올림
-- 2020-03-16 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 09:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'DD'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 일 반올림
-- 2020-03-17 00:00:00
SELECT TO_CHAR(ROUND(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'DD'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
TRUNC(d[,F])
Trunc 함수는 절삭한다.
F가 연도라면 연도 단위로 달이면 달로 일이면 일 단위로 절삭한다.
F가 생략되면 날짜를 가장 가까운 날짜로 절삭한다.
-- 2020-01-01 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'YEAR'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 2020-03-01 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'MONTH'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 2020-03-16 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'DD'),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
-- 2020-03-16 00:00:00
SELECT TO_CHAR(TRUNC(TO_DATE('2020-03-16 21:00:00',
'YYYY-MM-DD HH24:MI:SS')),
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
반응형
'IT > 데이터베이스' 카테고리의 다른 글
Oracle Table 권한부여 하기 (0) | 2020.04.09 |
---|---|
DBeaver 실행 쿼리 히스토리 보기 (0) | 2020.03.23 |
오라클 DBMS_RANDOM 난수/문자 생성하기 (0) | 2020.03.12 |
오라클 피벗(Pivot) (0) | 2020.03.10 |
오라클 버전 확인 하기 (0) | 2020.03.10 |
최근댓글