DB에서 날짜를 표시할 때 쓰는 키워드를 소개한다.
SYSDATE
SYSTIMESTAMP,
ADD_MONTHS,
MONTHS_BETWEEN
LAST_DAY
NEXT_DAY
이와 같이 여러개가 있는데 차이점을 살펴보자.
-- 3.Datetime Functions (날짜 함수) -- 날짜 함수는 오라클 날짜에 대해 연산을 한다. -- 날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다. -- 1) SYSDATE : 현재 일자와 시간(시스템기준)을 얻을 수 있다.(최소단위 1초) -- [뺄 숫자]/[24시간중]/[60분 중]/[60 초 중] -- HH:MM:SS 는 안된다. MM 은 MONTH 의 의미로 사용 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') "지금시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-1,'YYYY-MM-DD HH24:MI:SS') "하루전지금시간" FROM DUAL ; -- AS 나 그냥 컬럼명을 쓸 수 있지만 앞에 숫자가 있는 경우 필히 더블쿼터 사용 SELECT TO_CHAR(SYSDATE-1/24,'YYYY-MM-DD HH24:MI:SS') "1시간전시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-1/24/60,'YYYY-MM-DD HH24:MI:SS') "1분전시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-(5/24 + 30/24/60 + 10/24/60/60),'YYYY-MM-DD HH24:MI:SS') "5시간 30분 10초전" FROM DUAL ; -- 2) SYSTIMESTAMP : 현재 일자와 시간(시스템기준)을 얻을 수 있다.(최소단위 10억분의 1초) -- SYSTIMESTAMP 예제 -- 초 단위 이상 표기 할 시에는 날짜 계산이 안된다. SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF3') FROM DUAL ; SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS.FF9') FROM DUAL ; SELECT TO_CHAR(SYSTIMESTAMP -1/24,'YYYY-MM-DD HH24:MI:SS') "1시간전시간" FROM DUAL ; SELECT TO_CHAR(SYSTIMESTAMP -1/24/60,'YYYY-MM-DD HH24:MI:SS') "1분전시간" FROM DUAL ; -- 3)ADD_MONTHS(a, b) : a의 날짜에 b의 달을 더한 값을 반환 한다. -- 오늘 날짜에 3달을 추가 SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'RRRR-MM-DD') "date" FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,3),'RRRR-MM-DD') "date" FROM DUAL; -- 4) MONTHS_BETWEEN(a1, a2) : a1과 a2 사이의 달의 수를 NUMBER형 타입으로 반환 한다. -- 2016년01월01일 과 2016년 11월 01일 사이의 달 수 SELECT MONTHS_BETWEEN(TO_DATE('2016-11-01','RRRR-MM-DD'), TO_DATE('2016-01-01','RRRR-MM-DD')) "month" FROM DUAL; -- 2016년 06월 05일 과 2016년 15월 01일 사이의 일 수 SELECT TO_DATE('2016-06-05','RRRR-MM-DD') - TO_DATE('2016-05-01','RRRR-MM-DD') "Day" FROM DUAL; -- 5) LAST_DAY(d) : 달의 마지막 날의 날짜를 반환 한다 SELECT SYSDATE today, LAST_DAY(SYSDATE) lastday FROM DUAL; -- 6) NEXT_DAY(d, c1) : 돌아오는 명시된 요일의 일자를 반환한다. -- 요일은 1(일) ~ 7(토) -- 4이므로 수요일 SELECT NEXT_DAY(SYSDATE, 4) "Next Wednesday" FROM DUAL; SELECT NEXT_DAY(TO_DATE('20110501','RRRRMMDD'), 2) "5월 첫째주 월요일" FROM DUAL;
'Oracle DB 11g > 02.활용, SQL' 카테고리의 다른 글
[DB]02-16.Oracle DB ROLLUP, DECODE (0) | 2018.10.23 |
---|---|
[DB]02-15.Oracle DB 숫자형 함수(ABS, CEIL, FLOOR, OMD, ROUND, TRUNC) (0) | 2018.10.12 |
[DB]02-13.Oracle DB 문자형 함수(Char Function) (0) | 2018.10.12 |
[DB]02-12.Oracle DB 집계함수(COUNT, MAX, MIN, AVG, ROUND, SUM) (0) | 2018.10.12 |
[DB]02-11.Oracle DB 시퀀스(Sequence) (0) | 2018.10.08 |