hoony's web study

728x90
반응형

예를 들어 201205 에서 201318 주 사이에 몇주가 있는지를 계산하는 쿼리

SELECT TRUNC((MAX(BASE_DATE) - MIN(BASE_DATE)) / 7) RESULT
      FROM (SELECT BASE_DATE + LEVEL - 1 BASE_DATE
                 , TO_CHAR(BASE_DATE + LEVEL - 1, 'WW') WEEK_NUM
                 , TO_CHAR(BASE_DATE + LEVEL - 1, 'YYYY') || TO_CHAR(BASE_DATE + LEVEL - 1, 'WW') aaa
              FROM (SELECT TO_DATE(SUBSTR(:AS_START, 1, 4), 'YYYY') BASE_DATE
                      FROM DUAL) A
            CONNECT BY BASE_DATE + LEVEL - 1 <= LAST_DAY(TO_DATE(SUBSTR(:AS_END, 1, 4) || '12', 'YYYYMM')))
     WHERE aaa = :AS_START
        OR AAA = :AS_END

여기에서도 주의할 사항이 있는데 시작주가 0으로 시작하느냐 1로 시작하느냐와 오라클 설정에 주의해야
정확한 값을 얻을 수 있습니다.
이 점은 쿼리보시면 아마 이해 하실꺼에요 ^^




728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading