입력받은 시작 종료 날짜로 끊기 0 4 1,083

by 악어새 [Oracle 기초] 날짜 끊기 [2018.11.06 09:50:02]



안녕하세요.

모르는 부분이 생겨 질문 남깁니다.

입력 받은 날짜를 기준으로 5개월 단위로 끊어서 나타내고 싶습니다.

첨부된 사진을 보시면

결과가 첫 행은 제대로 나왔고

두 번째 행의 시작 날짜가 6월 1일이 되어야 합니다 ㅠㅠㅠ

따라서

01/01 ~ 05/31

06/01 ~ 10/31

11/01 ~ 03/31

04/01 ~ 05/031

이렇게 나와야 하는데 방법을 모르겠어서 도움 요청합니다 ,,,

loop 를 쓸까 하다가 select 결과가 한개인 select 문만 된다고 해서 ㅠㅠㅠㅠ

by 마농 [2018.11.06 10:25:48]

오류 결과표 말고 원하시는 결과표도 표현해 주세요.(아!.. 본문에 있었네요.)
연도를 2자리 쓰시네요? 4자리 쓰길 권장하고요.
굳이 2자리 쓰시려면 yy 보다는 rr 쓰세요.


by 악어새 [2018.11.06 10:30:23]

아 감사합니다 RR 은 처음 알았습니다.

A B
18/01/01 18/05/31
18/06/01 18/10/31
18/11/01 19/03/31
19/04/01 19/05/31

이게 원하는 결과표 입니다


by 마농 [2018.11.06 13:03:59]
SELECT ADD_MONTHS(sdt, (LEVEL-1)*5) sdt
     , LEAST(edt, ADD_MONTHS(sdt, LEVEL*5)-1) edt
  FROM (SELECT TO_DATE('18/01/01', 'yy/mm/dd') sdt
             , TO_DATE('19/05/31', 'yy/mm/dd') edt
          FROM dual)
 CONNECT BY LEVEL <= CEIL(MONTHS_BETWEEN(edt+1, sdt) / 5)
;

 


by 악어새 [2018.11.06 14:00:34]

오,,,, 정말 감사합니다

CONNECT BY LEVEL 이 루프를 돌 수 있게 해주는군요,,

감사합니다!!!

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