⇒ SYSDTE
SELECT TO_CHAR(SYSDATE,'RRRR-MM-DD HH24:MI:SS') "지금시간"
FROM DUAL ; -- 2024-02-28 00:34:31
SELECT TO_CHAR(SYSDATE-1,'RRRR-MM-DD HH24:MI:SS') "하루전지금시간"
FROM DUAL ; -- 2024-02-27 00:34:31
SELECT TO_CHAR(SYSDATE-1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
FROM DUAL ; -- 2024-02-27 23:34:59
SELECT TO_CHAR(SYSDATE-1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
FROM DUAL ; -- 2024-02-28 00:36:26
SELECT TO_CHAR(SYSDATE-1/24/60/10,'RRRR-MM-DD HH24:MI:SS') "6초전시간"
FROM DUAL ; -- 2024-02-28 00:37:34
SELECT TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),'RRRR-MM-DD HH24:MI:SS') "5시간 30분 10초전"
FROM DUAL ; -- 2024-02-27 19:07:35
⇒ SYSTIMESTAMP
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF3')
FROM DUAL ; -- 2024-02-28 00:39:52.119
SELECT TO_CHAR(SYSTIMESTAMP,'RRRR-MM-DD HH24:MI:SS.FF9')
FROM DUAL ; -- 2024-02-28 00:39:58.947000000
SELECT TO_CHAR(SYSTIMESTAMP -1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간"
FROM DUAL ; -- 2024-02-27 23:40:05
SELECT TO_CHAR(SYSTIMESTAMP -1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시간"
FROM DUAL ; -- 2024-02-28 00:39:12
⇒ ADD_MONTHS(a, b)
-- SYSDATE를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'RRRR-MM-DD') "date"
FROM DUAL; -- 2024-05-28
-- TIMESTAMP를 이용한 예제
SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3),'RRRR-MM-DD') "date"
FROM DUAL; --2024-05-28
⇒ MONTHS_BETWEEN(a1, a2)
-- 두 일자 사이에 달의 수를 조회하는 예제
SELECT MONTHS_BETWEEN(TO_DATE('2010-06-05','RRRR-MM-DD'),
TO_DATE('2010-05-01','RRRR-MM-DD')) "month"
FROM DUAL; -- 1.12903225806451612903225806451612903226
-- 두 일자 사이에 일짜 수를 조회하는 예제
SELECT TO_DATE('2010-06-05','RRRR-MM-DD') - TO_DATE('2010-05-01','RRRR-MM-DD') AS "Day"
FROM DUAL; -- 35
⇒ ROUND(d[,F])
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') AS EX_ROUNT
FROM DUAL
UNION ALL
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') AS EX_ROUNT
FROM DUAL
UNION ALL
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') AS EX_ROUNT
FROM DUAL
UNION ALL
SELECT TO_CHAR(ROUND(TO_DATE('2011-09-11 21:00:01',
'RRRR-MM-DD HH24:MI:SS')),
'RRRR-MM-DD HH24:MI:SS') AS EX_ROUNT
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
⇒ 날짜에 대한 산술 연산
최근에 SYSDATE에 대해서 공부를 했는데, 또 SYSDATE가 포함되어 있는 날짜 함수에 대해서 공부를 했다. 확실히 돈 만큼이나 시간도 중요한 만큼 시간 및 날짜 처리가 매우 중요한 것 같다. 그것을 ORACLE에서 실현하기 위해서는 연습만이 살 길일 것 같다.