질의작성

입력된 년월 또는 두개의 날짜을 이용하여 달력 및 주차 구하기

by 성진 posted Aug 10, 2016

-- 입력된 월 기준

SELECT

        ADDDATE(A.SETMONTH, LEVEL -1) AS DT,

        TO_CHAR(ADDDATE(A.SETMONTH, LEVEL -1), 'DAY') AS SW,

        CONCAT(DENSE_RANK() OVER(ORDER BY TRUNC(ADDDATE(A.SETMONTH, LEVEL -1), 'DAY')), ' 주차') AS MBWK

FROM (

        SELECT

                TO_DATE('201601','YYYYMM') AS SETMONTH

) A

CONNECT BY LEVEL <= EXTRACT(DAY FROM LAST_DAY(A.SETMONTH))


결과>


2016-01-01 금요일       1 주차

2016-01-02 토요일       1 주차

2016-01-03 일요일       2 주차

2016-01-04 월요일       2 주차

2016-01-05 화요일       2 주차

2016-01-06 수요일       2 주차

2016-01-07 목요일       2 주차

2016-01-08 금요일       2 주차

2016-01-09 토요일       2 주차

2016-01-10 일요일       3 주차

2016-01-11 월요일       3 주차

2016-01-12 화요일       3 주차

2016-01-13 수요일       3 주차

2016-01-14 목요일       3 주차

2016-01-15 금요일       3 주차

2016-01-16 토요일       3 주차

2016-01-17 일요일       4 주차

2016-01-18 월요일       4 주차

2016-01-19 화요일       4 주차

2016-01-20 수요일       4 주차

2016-01-21 목요일       4 주차

2016-01-22 금요일       4 주차

2016-01-23 토요일       4 주차

2016-01-24 일요일       5 주차

2016-01-25 월요일       5 주차

2016-01-26 화요일       5 주차

2016-01-27 수요일       5 주차

2016-01-28 목요일       5 주차

2016-01-29 금요일       5 주차

2016-01-30 토요일       5 주차

2016-01-31 일요일       6 주차


-- 입력된 두개의 날짜 기준

SELECT

        ADDDATE(A.ST_DAY, LEVEL - 1) AS DT,

        TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'DAY') AS SW,

        CONCAT(TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'YYYY'), ' ', TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'MM'), ' ', DENSE_RANK() OVER(PARTITION BY MONTH(ADDDATE(A.ST_DAY, LEVEL - 1)) ORDER BY TRUNC(ADDDATE(A.ST_DAY, LEVEL - 1), 'DAY')), ' 주차') AS MBWK

FROM (

        SELECT

                TO_DATE('2016-08-01') AS ST_DAY,

                TO_DATE('2016-08-09') AS ED_DAY

) A

CONNECT BY

        LEVEL <= DATEDIFF(ED_DAY, ST_DAY)


결과>


2016-08-01 월요일       2016년 08월 1 주차

2016-08-02 화요일       2016년 08월 1 주차

2016-08-03 수요일       2016년 08월 1 주차

2016-08-04 목요일       2016년 08월 1 주차

2016-08-05 금요일       2016년 08월 1 주차

2016-08-06 토요일       2016년 08월 1 주차

2016-08-07 일요일       2016년 08월 2 주차

2016-08-08 월요일       2016년 08월 2 주차




Articles

1 2 3 4 5 6 7 8 9 10