쿼리 질문이요. 0 8 1,005

by 라슈 [SQL Query] [2013.08.12 12:42:46]


ID START_TIME(시분) END_TIME(시분)
01 2030 2230
02 2230 0100
03 0130 0330
:
:
:

위와 같은 데이터가 있을때

현재 시분사이에 있는 ID를 검색할려고 하면 어떻게 해야할까요??

02번같은 케이스가 문제네요.

고수님들 답변 부탁드립니다.
by 아린 [2013.08.12 13:04:21]
"현재 시분사이에 있는 ID를 검색할려고 하면" 

검색 조건이 어떻게 되는가요 ? 현재 시간인 sysdate 를 활용하나요?

SELECT .......
  FROM t
 WHERE 조건 = sysdate(시간.) ....

by 라슈 [2013.08.12 13:08:44]

네 SYSDATE를 이용합니다.


by 아린 [2013.08.12 13:09:24]
WITH t(id, sdt, edt) AS(
SELECT '01', '2030', '2230' FROM dual UNION ALL
SELECT '02', '2230', '0100' FROM dual UNION ALL
SELECT '04', '1230', '1500' FROM dual UNION ALL
SELECT '03', '0130', '0330' FROM dual
)
SELECT id
  FROM (SELECT id
             , TO_DATE(TO_CHAR(SYSDATE, 'yyyymmdd')||sdt, 'yyyymmddhh24mi') sdt
             , CASE WHEN sdt > edt 
                    THEN TO_DATE(TO_CHAR(SYSDATE, 'yyyymmdd')
                       ||edt, 'yyyymmddhh24mi') + 1
                    ELSE TO_DATE(TO_CHAR(SYSDATE, 'yyyymmdd')
                       ||edt, 'yyyymmddhh24mi')
               END edt            
          FROM t
        )
 WHERE SYSDATE BETWEEN sdt AND edt   

by 라슈 [2013.08.12 13:15:14]

케이스문이 있었군요!!
답변 감사합니다.^^


by 마농 [2013.08.12 13:37:47]
현재시각이 밤 11:30 분이라면 ID 02번 값이 나오겠지만.
현재시각이 새벽 00:30 분이라면 ID 02번 값이 나오질 않겠네요.

by 아린 [2013.08.12 13:37:20]
SELECT *
  FROM (SELECT id
             , sdt
             , CASE WHEN sdt > edt 
                    THEN TO_CHAR(TO_NUMBER(edt) + 2400)
                    ELSE edt
               END edt          
          FROM t
        )
 WHERE TO_CHAR(SYSDATE, 'hh24mi') BETWEEN sdt AND edt   

by 마농 [2013.08.12 13:54:30]
SELECT id, sdt, edt
  FROM (SELECT id, sdt, edt
             , CASE WHEN sdt <= edt THEN sdt ELSE '0000' END sdt2
             , CASE WHEN sdt <= edt THEN edt ELSE '2400' END edt2
          FROM t
        )
 WHERE TO_CHAR(sysdate, 'hh24mi') BETWEEN sdt  AND edt2
    OR TO_CHAR(sysdate, 'hh24mi') BETWEEN sdt2 AND edt
;

by 마농 [2013.08.12 14:04:08]

음.. 시작시간과 종료시간의 경계에 있을 떄 어떤걸 뽑아야 하는지 기준이 있어야 할듯 하네요.
예) 현재시각이 22:30 인경우 ID 01 이 나와야 할지 02 가 나와야 할지? 둘다 나와도 되는지?

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