예를 들어 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로 시작하느냐와 오라클 설정에 주의해야
정확한 값을 얻을 수 있습니다.
이 점은 쿼리보시면 아마 이해 하실꺼에요 ^^
|
|
오라클 DB 버전 확인 쿼리 (0) | 2015.11.23 |
---|---|
TO_CHAR 공백 제거하기 (0) | 2014.10.17 |
Toad를 이용해서 엑셀 데이터를 Oracle table 에 Insert 하기 (0) | 2009.01.15 |
oracle trigger 예제 ^^[퍼온것] (0) | 2008.12.30 |
오라클에서 트리거 활성화상태 확인하기 (0) | 2008.09.01 |