[질문] 날짜 범위에 속하는 모든 날짜 구하기 0 3 1,789

by 알콩 [2012.12.12 17:01:40]


 

WITH TAB_FROMTO(FR_DT,TO_DT)
AS
(
	SELECT '20121004', '20121004' FROM DUAL UNION ALL
	SELECT '20121005', '20121015' FROM DUAL UNION ALL
	SELECT '20121116', '20121116' FROM DUAL UNION ALL
	SELECT '20121117', '20121117' FROM DUAL UNION ALL
	SELECT '20121216', '20121217' FROM DUAL UNION ALL
	SELECT '20121218', '20121222' FROM DUAL UNION ALL
	SELECT '20121223', '20121231' FROM DUAL
)
SELECT *
FROM TAB_FROMTO
;


위 의 데이터를 가지고, 

1. FROM~TO 의 날짜에 포함되는 모든 날짜를 
2. YYYYMMDD 형식으로 작은날짜부터 순서대로 

모두 구하고 싶은데 어떻게하면 가능할까요?

즉 결과가 위 데이터에서

20121004~20121231 의 날짜 중 

위 FROM~TO 에 속하는 날짜만 나와야 합니다.

결과 예시
RESULT_DT
20121004
20121005
20121006
20121007
20121008
20121009
20121010
20121011
20121012
20121013
20121014
20121015
20121116
20121117
20121218
20121219
20121220
20121221
20121222
20121223
20121224
20121225
20121226
20121227
20121228
20121229
20121230
20121231


by 알콩 [2012.12.12 17:12:08]

죄송합니다. 테스트 데이터가 잘못 입력되어 수정하였습니다. ^^;

by 제로 [2012.12.12 17:30:37]
with tab_fromto(fr_dt,to_dt) as
( select '20121004', '20121004' from dual union all
 select '20121005', '20121015' from dual union all
 select '20121116', '20121116' from dual union all
 select '20121117', '20121117' from dual union all
 select '20121216', '20121217' from dual union all
 select '20121218', '20121222' from dual union all
 select '20121223', '20121231' from dual
), dt_tab(odt) as
( select to_char(to_date('20120101', 'yyyymmdd')-1 + level, 'yyyymmdd') 
 from dual
 connect by level <= to_date('20121231', 'yyyymmdd')-to_date('20120101', 'yyyymmdd') + 1
) 
select odt
from tab_fromto
  , dt_tab
where odt between fr_dt and to_dt
;

by 알콩 [2012.12.13 09:45:52]

제로님 감사합니다^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입