본문 바로가기

Job/Oracle

[Oracle Sql] 요일 달력 쿼리 만들기

[Oracle Sql] 요일 달력 쿼리 만들기



/*****************************************************************************/

--달력 쿼리


SELECT MIN (DECODE (TO_CHAR (DAYS, 'D'), 1, TO_CHAR (DAYS, 'FMDD'))) AS SUN,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 2, TO_CHAR (DAYS, 'FMDD'))) AS MON,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 3, TO_CHAR (DAYS, 'FMDD'))) AS TUE,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 4, TO_CHAR (DAYS, 'FMDD'))) AS WED,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 5, TO_CHAR (DAYS, 'FMDD'))) AS THU,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 6, TO_CHAR (DAYS, 'FMDD'))) AS FRI,

         MIN (DECODE (TO_CHAR (DAYS, 'D'), 7, TO_CHAR (DAYS, 'FMDD'))) AS SAT

  FROM   ( SELECT BASE_MON + LEVEL - 1 AS DAYS,

                  ( TRUNC(BASE_MON + LEVEL - 1, 'D') - TRUNC(TRUNC(BASE_MON + LEVEL - 1, 'Y'), 'D') ) / 7 + 1 AS WEEK_GRP

           FROM   ( SELECT TO_DATE ('2013' || '09', 'YYYYMM') AS BASE_MON FROM DUAL )

           CONNECT BY BASE_MON + LEVEL - 1 <= LAST_DAY (BASE_MON) )

  GROUP BY WEEK_GRP

  ORDER BY WEEK_GRP;



/*****************************************************************************/

--요일 리턴


SELECT TRUNC(SYSDATE,'IW') FROM DUAL;


SELECT TO_CHAR(TRUNC(SYSDATE+,'IW'),'YYYYMMDD DAY') FROM DUAL;


SELECT TO_CHAR(SYSDATE, 'D'),TO_CHAR(SYSDATE, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+1, 'D'),TO_CHAR(SYSDATE+1, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+2, 'D'),TO_CHAR(SYSDATE+2, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+3, 'D'),TO_CHAR(SYSDATE+3, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+4, 'D'),TO_CHAR(SYSDATE+4, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+5, 'D'),TO_CHAR(SYSDATE+5, 'DY') FROM DUAL

UNION ALL

SELECT TO_CHAR(SYSDATE+6, 'D'),TO_CHAR(SYSDATE+6, 'DY') FROM DUAL

;



SELECT * FROM COM_ONLN_DRTM_PSTP_I WHERE DT > '20121231';



SELECT TO_CHAR(TO_DATE('20121225'), 'D'),TO_CHAR(TO_DATE('20121225'), 'DY') FROM DUAL;


/*****************************************************************************/