이걸 다 외울 수도 없고, 매번 찾아서 하는것도 귀찮아. 블로그에 담아 놓는다.
출처는 여기저기 인터넷에서 찾은것 총 망라 ㅎㅎ
/* 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 |