오라클 두 날짜 사이 데이터 구하기 (시간까지) 0 4 972

by tester0101 [SQL Query] [2021.11.28 01:01:56]


안녕하세요.

오라클에서 시작일과 종료일을 주면, 그 사이 날짜 데이터를 출력하려고 하는데요..

 

년/월/일 구하는건 알겠는데..

거기다가 hh24 형식을 추가해서 출력하고 싶습니다.

 

예를 들어, 시작일 2021-11-28 ~ 종료일 2021-11-30 이면...

2021112800 ~ 2021112823

2021112900 ~ 2021112923

2021113000 ~ 2021113023

까지 모든 데이터를 출력하고 싶습니다.

 

SELECT to_char((to_date('20211128'))+(LEVEL/25), 'YYYYMMDDHH24') as yyyymmddhh FROM DUAL CONNECT BY LEVEL <= 24;

쿼리를 위처럼 짜보긴 했는데..

시작/종료일자를 넣으면 쭉 연속으로 나오게는 어떻게 해야할지 감이 안와서 질문 드려봅니다.

 

 

 

 

 
by 뉴비디비 [2021.11.28 10:52:50]
-- LEVEL 범위를 날짜 차이만큼 주면 될꺼같아요.
SELECT 
    TO_CHAR((TO_DATE('2021-11-28'))+((LEVEL-1)/24), 'YYYY-MM-DD HH24') as yyyymmddhh 
FROM DUAL 
CONNECT BY LEVEL <= ((TO_DATE('2021-11-30', 'YYYY-MM-DD') - TO_DATE('2021-11-28', 'YYYY-MM-DD')) +1)*24 ; -- 하루추가보정 

 


by tester0101 [2021.11.28 12:28:22]

댓글 감사합니다^^

질문 남기고, 새벽에 답변 주신거랑 비슷하게 해결은 했네요

다른 분들께도 도움이 되면 좋겠어요~


by 마농 [2021.11.29 08:22:30]
SELECT TO_CHAR(sdt + (LEVEL - 1) / 24, 'yyyymmddhh24') tm
  FROM (SELECT TO_DATE('20211128', 'yyyymmdd') sdt
             , TO_DATE('20211130', 'yyyymmdd') edt
          FROM dual
        )
 CONNECT BY LEVEL <= (edt - sdt + 1) * 24
;

 


by tester0101 [2021.11.29 09:05:57]

댓글 감사합니다!

많은 도움이 되었습니다~

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