/* 특정일 까지의 간격을 년, 개월, 일로 표현하기 */
SELECT TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) / 12)) "년",
TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) / 12) * 12)) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL
;
/* '금일' - '생일' / 개월 -> 태어난지 몇 개월이 흘렀는가? */
SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('1978-01-24','YYYY-MM-DD')) FROM DUAL;
/* 금일로부터 4개월 후 */
SELECT ADD_MONTHS(SYSDATE,4) FROM DUAL;
/* 금일 이후 최초의 목요일 (NLS_LANG이 KOREAN_KOREA.KO16KSC5601로 되어 있으면 한글로 요일 표현) */
SELECT NEXT_DAY(SYSDATE, '목요일') FROM DUAL;
/* 이달의 마지막 날짜 */
SELECT LAST_DAY(SYSDATE) FROM DUAL;
/* '금일' 반올림(오후면 다음날..) */
SELECT ROUND(SYSDATE,'DD') FROM DUAL;
/* '금일' 주 첫일 찾기 */
SELECT TRUNC(SYSDATE,'WW') FROM DUAL;
-- 날짜계산
/* 어제 */ DateColumn BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1) + 0.99999421;
/* 오늘 */ DateColumn BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999421;
/* 내일 */ DateColumn BETWEEN TRUNC(SYSDATE+1) AND TRUNC(SYSDATE+1) + 0.99999421;
/* 금주 */ DateColumn BETWEEN TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'D') AND TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'D') + 6.99999421;
/* 차주 */ DateColumn BETWEEN TRUNC(SYSDATE+8) - TO_CHAR(SYSDATE,'D') AND TRUNC(TRUNC(SYSDATE) + 14.99999421) - TO_CHAR(SYSDATE,'D');
/* 금월 */ DateColumn BETWEEN TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'DD') AND TRUNC(LAST_DAY(SYSDATE))+0.99999421;
/* 전월 */ DateColumn BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-1)+1) - TO_CHAR(SYSDATE,'DD') AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))+0.99999421;
/* 차월 */ DateColumn BETWEEN ADD_MONTHS(TRUNC(SYSDATE),1) - TO_CHAR(SYSDATE,'DD') + 1 AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)+0.99999421);
SELECT TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) / 12)) "년",
TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) / 12) * 12)) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')) - TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19780124', 'YYYYMMDD')))) * 30.5) "일"
FROM DUAL
;
/* '금일' - '생일' / 개월 -> 태어난지 몇 개월이 흘렀는가? */
SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('1978-01-24','YYYY-MM-DD')) FROM DUAL;
/* 금일로부터 4개월 후 */
SELECT ADD_MONTHS(SYSDATE,4) FROM DUAL;
/* 금일 이후 최초의 목요일 (NLS_LANG이 KOREAN_KOREA.KO16KSC5601로 되어 있으면 한글로 요일 표현) */
SELECT NEXT_DAY(SYSDATE, '목요일') FROM DUAL;
/* 이달의 마지막 날짜 */
SELECT LAST_DAY(SYSDATE) FROM DUAL;
/* '금일' 반올림(오후면 다음날..) */
SELECT ROUND(SYSDATE,'DD') FROM DUAL;
/* '금일' 주 첫일 찾기 */
SELECT TRUNC(SYSDATE,'WW') FROM DUAL;
-- 날짜계산
/* 어제 */ DateColumn BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1) + 0.99999421;
/* 오늘 */ DateColumn BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999421;
/* 내일 */ DateColumn BETWEEN TRUNC(SYSDATE+1) AND TRUNC(SYSDATE+1) + 0.99999421;
/* 금주 */ DateColumn BETWEEN TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'D') AND TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'D') + 6.99999421;
/* 차주 */ DateColumn BETWEEN TRUNC(SYSDATE+8) - TO_CHAR(SYSDATE,'D') AND TRUNC(TRUNC(SYSDATE) + 14.99999421) - TO_CHAR(SYSDATE,'D');
/* 금월 */ DateColumn BETWEEN TRUNC(SYSDATE+1) - TO_CHAR(SYSDATE,'DD') AND TRUNC(LAST_DAY(SYSDATE))+0.99999421;
/* 전월 */ DateColumn BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-1)+1) - TO_CHAR(SYSDATE,'DD') AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))+0.99999421;
/* 차월 */ DateColumn BETWEEN ADD_MONTHS(TRUNC(SYSDATE),1) - TO_CHAR(SYSDATE,'DD') + 1 AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)+0.99999421);
'닷컴's_열공 > Database' 카테고리의 다른 글
[oracle강좌] 오라클 / PL-SQL 에서 쿼리시 Array Processing (0) | 2008.01.14 |
---|---|
imp/exp 적절한 사용법 (0) | 2008.01.14 |
sql 기준월 구하는 쿼리 SQL (0) | 2008.01.05 |
Oracle Procedure를 이용하여 Mail 보내기(SMTP) (0) | 2007.12.26 |
Oracle Supplied PL/SQL Packages (0) | 2007.12.26 |