by 구루비 ADD_MONTH SYSDATE LAST_DAY MONTH_BETWEEN SYSDATE SYSTIMESTAMP TRUNC ROUND [2002.01.20]
날짜 함수는 오라클 날짜에 대해 연산을 한다.
날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다.
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 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.
최소단위 = 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의 달을 더한 값을 반환 한다.
-- 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 사이의 달의 수를 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 함수는 달의 마지막 날의 날짜를 반환 한다
-- LAST_DAY예제 SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday FROM DUAL; TODAY LASTDAY -------- -------- 11/05/28 11/05/31
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 함수는 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 함수는 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
연 산 | 결과치 | 사용목적 |
---|---|---|
날짜 + 숫자 | 날짜 | 특정한 날로부터 며칠 후의 날짜 계산 |
날짜 - 숫자 | 날짜 | 특정한 날로부터 며칠 전의 날짜 계산 |
날짜 - 날짜 | 숫자 | 두 날짜 사이의 차이를 숫자로 계산 |
- 강좌 URL : http://www.gurubee.net/lecture/1026
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
손님 데이터베이스에 존재하는 실제 테이블에 있는 데이터를 사용하지 않고 사용하는 예제의 경우는 굳이 실제 테이블명을 FROM절에 써줄 필요없이 본문처럼 더미테이블에서 돌려도 결과가 나옵니다 따라서 FROM절에 DUAL를 적어주는 걸로 알고 있네요