본문 바로가기

DB/Oracle

오라클 날짜계산

이걸 다 외울 수도 없고, 매번 찾아서 하는것도 귀찮아. 블로그에 담아 놓는다.


출처는 여기저기 인터넷에서 찾은것 총 망라 ㅎㅎ 


/* A와 B에 들어가는 두 날짜 사이의 달의 수를 NUMBER형 타입으로 반환한다.(소수점 포함) */
SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2012-01-01','YYYY-MM-DD')) FROM DUAL;


오늘(2012-02-15) 날짜와 2012-01-01 사이의 달의 수를 조회해보니 1은 넘고 2는 되지 않았다.

소수점 10자리 이상까지 나눠서 진짜 REAL한 간격을 알려준다.


저 차이 값에 ROUND 함수를 적절히 사용하여 정수형으로 받아 사용하면되겠다. 


자, 그럼 여기서 궁금한것 한 가지,

A - B의 값을 구하는 이 형태에, B가 더 최근 날짜 이면 어떻게 될까? 마이너스를 반환할까? 




맞다. 

같은 차이 값에 마이너스가 붙었다. 


이 차이를 생각해서, 첫번째, 두번째 인자값을 고려해 알맞게 사용하면 되겠다. 




-- 특정일의 달수 더한 날
SELECT ADD_MONTHS(SYSDATE, 10)  FROM DUAL;


-- 특정일의 다음주 요일
SELECT NEXT_DAY(SYSDATE,'FRIDAY')  FROM DUAL;


-- 특정일의 해당 월의 마지막 날
SELECT LAST_DAY(SYSDATE)  FROM DUAL;
 

-- 특정일의 반올림(오후면 다음날..)
SELECT ROUND(SYSDATE,'DD')  FROM DUAL;
 

-- 특정일의 전주 토요일(해당 전주의 마지막 날)에해당하는 날짜
SELECT TRUNC(SYSDATE,'WW')  FROM DUAL;
 

-- 특정일의 주 일요일(해당 주의 첫째 날)에해당하는 날짜
SELECT TRUNC(SYSDATE,'D')  FROM DUAL;
  

'DB > Oracle' 카테고리의 다른 글

오라클 날짜  (0) 2016.02.04
Oracle에서 특수문자를 문자로 인식시키는 방법  (0) 2016.02.04
오라클에서 요일구하기  (0) 2016.02.04
[ORACLE] 오라클 날짜계산  (0) 2016.02.04
다양한 인덱스 스캔 방식  (0) 2016.02.04