두 날짜 사이의 월 0 1 4,319

by 트집이 [SQL Query] oracle plsql connect by 날짜계산 distinct order by [2023.03.30 09:50:49]


						SELECT  DISTINCT SUBSTR(DT, 4, 2) DD
						FROM 	(
								SELECT 	TO_DATE('20221028','YYYYMMDD') + LEVEL - 1 DT
						        FROM 	DUAL 
						        CONNECT BY LEVEL   <=   TO_DATE('20230928','YYYYMMDD') - TO_DATE('20221028' ,'YYYYMMDD') + 1
								)
						ORDER BY 
								DD;

위와 같이 두날짜 사이의 월을 가져오는 쿼리를 만들었는데 문제가 order by로 월 순서로 가져오고 싶은데 잘 안 되네요.

실제 날짜를 기준으로 order by 를 해야합니다.

항상 도움 주셔서 감사합니다.

by 마농 [2023.03.30 10:33:38]
월만 뽑는게 맞나요? 연도도 함께 뽑는게 맞지 않나요?
그리고 date 항목에 substr 한 것은 잘못된 사용법 입니다.
SELECT TO_CHAR(ADD_MONTHS(sdt, LEVEL - 1), 'yyyymm') yyyymm
     , TO_CHAR(ADD_MONTHS(sdt, LEVEL - 1), 'mm') mm
  FROM (SELECT TRUNC(TO_DATE('20221028', 'yyyymmdd'), 'mm') sdt
             , TRUNC(TO_DATE('20230928', 'yyyymmdd'), 'mm') edt
          FROM dual
        )
 CONNECT BY LEVEL <= MONTHS_BETWEEN(edt, sdt) + 1
;

 

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