ORACLE 특정 기간사이의 특정 시간안에 해당하는 데이터 찾기 0 3 14,556

by 하루살이 [SQL Query] [2015.12.10 19:30:38]


특정 기간안의 데이터를 가져오는건 처리 되어있는 상황에서

조건을 하나 더 붙여서 특정일 안의 데이터 중에서 특정 시간 사이의 값만을 추출할 수 있을까요?

예를 들어 12월 3일부터 10일까지의 데이터 중에서

오후 6시 부터 다음날 오전 9시이전까지의 데이터를 가져오고 싶어요

 

AND로 TO_DATE에 가져오는 년월일 다 빼고 시간가져와서 붙여봤더니 결과값이 제대로 나오질 않네요...

 

SELECT *
  FROM TABLE_NAME
 WHERE     (TIME >=
               TO_DATE ('2015-12-03 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))
       AND (TIME <=
               TO_DATE ('2015-12-10 23:59:59', 'YYYY-MM-DD HH24:MI:SS'))

by 겸댕2후니 [2015.12.10 19:43:45]

TIME컬럼이 DATE 형식이 맞나요??

----------------------------------------------------------------

예를 들어 12월 3일부터 10일까지의 데이터 중에서

오후 6시 부터 다음날 오전 9시이전까지의 데이터를 가져오고 싶어요

----------------------------------------------------

위의 질문은 12월 3일 18시 ~ 12월 4일 09시

                 12월 4일 18시 ~ 12월 5일 09시

                                  '

                                  '

                 12월 9일 18시 ~ 12월 10일 09시

 

위의 기간을 다 더한 결과값을 원하시는건가요?

 

 

 

 

 

 

 

                      


by 하루살이 [2015.12.11 15:02:47]

그렇습니다 기간으로 먼저 가져온 결과물 중에 해당하는 시간에 있는 데이터만 추리는 것이죠

그리고 TIME의 데이터 타입은 DATE 타입이 맞습니다.

 


by jkson [2015.12.11 08:03:56]

TIME 컬럼이 DATE 형이라면

1
2
3
4
5
6
7
8
SELECT *
  FROM table_name
 WHERE TIME BETWEEN TO_DATE ('2015-12-03', 'yyyy-mm-dd')
   AND TO_DATE ('2015-12-10', 'yyyy-mm-dd') + 0.99999
   AND (   TO_NUMBER (TO_CHAR (TIME, 'hh24mi')) >= 1800
        OR (    TO_NUMBER (TO_CHAR (TIME, 'hh24mi')) >= 0
            AND TO_NUMBER (TO_CHAR (TIME, 'hh24mi')) < 900)
       )

이렇게 하시면 될듯하네요.

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