약간 애매한데.. 임의의 ROW라는 게 정확히 어떤 걸 말씀하시는지.. 그냥 시간만 원하시는 건지..
시간만 원하시는 거면
SELECT DT + LV - 1 DT FROM (SELECT TO_DATE('2017-01-02') + 9 / 24 + (1 / 24 / 2) * (LEVEL - 1) DT FROM DUAL CONNECT BY LEVEL <= 18) , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 33) WHERE TO_CHAR(DT + LV - 1, 'D') NOT IN ('1', '7') ORDER BY DT
아 3월까지네요. 왜 2월 3일까지로 봤지?ㅋㅋ; 헐 시간도 5시까지네요. 왜 5시 30분으로..; 난독 증상이..;
SELECT TRUNC(DT + LV - 1) DT ,TO_CHAR(DT + LV - 1,'HH24MI') HR FROM (SELECT TO_DATE('2017-01-02') + 9 / 24 + (1 / 24 / 2) * (LEVEL - 1) DT FROM DUAL CONNECT BY LEVEL < 18) , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 90) WHERE TO_CHAR(DT + LV - 1, 'D') NOT IN ('1', '7') ORDER BY DT, HR
SELECT dt FROM ( SELECT TO_DATE('20170102', 'yyyymmdd') +(((level*0.5) -0.5) /24) dt FROM dual CONNECT BY TO_DATE('20170102', 'yyyymmdd') +(((level*0.5) -0.5) /24) <= TO_DATE('20170331', 'yyyymmdd') + 0.99999 ) WHERE TO_CHAR(dt, 'd') NOT IN ('1','7') AND TO_CHAR(dt, 'hh24mi') BETWEEN '0900' AND '1700' ORDER BY dt
이래저래 짜집기 해봤습니다 ㅋㅋ
SELECT dt, tm FROM (SELECT TO_CHAR(sdt + LEVEL - 1, 'yyyymmdd') dt FROM (SELECT TO_DATE('20170102', 'yyyymmdd') sdt -- 시작일 , TO_DATE('20170331', 'yyyymmdd') edt -- 종료일 FROM dual ) WHERE TO_CHAR(sdt + LEVEL - 1, 'd') NOT IN ('1', '7') CONNECT BY LEVEL <= edt - sdt + 1 ) , (SELECT TO_CHAR(stm + (LEVEL-1)/24/60 * itv, 'hh24mi') tm FROM (SELECT TO_DATE('0900', 'hh24mi') stm -- 시작시간 , TO_DATE('1700', 'hh24mi') etm -- 종료시간 , 30 itv -- 시간간격(분) FROM dual ) CONNECT BY LEVEL <= (etm - stm)*24*60 / itv + 1 ) ;