2012-06-17 7 views
0

Oracle 10.6에서 TIME_TABLE 테이블이 있습니다. 이 테이블에는 Start_Date라는 필드가 있습니다.날짜와 시간으로 날짜 필드 분할하기

Item  Start_Date 
1   3/13/2012 8:00:00 AM 
2   4/2/2012 1:30:31 PM 

Start_Date 필드에서 '8:00:00 AM'과 같은 시간 정보 만 가져오고 싶습니다. 시간 간격을 결정하고 싶기 때문에

CASE 
WHEN START_DATE between TO_DATE ('07:00 AM','HH:MI:SS AM') and TO_DATE('11:59',' HH:MI:SS AM') THEN 'TIME1' 

그러나 작동하지 않습니다! 어떻게해야합니까?

덕분에이 같은

답변

0

을보십시오 :이 START_DATE에 인덱스를 사용에서 DB를 방지 할 수 있다는

CASE 
WHEN to_char(start_date, 'hh24miss') BETWEEN '070000' AND '115900' 

+0

고맙습니다. 많이 일했습니다! – cadyT

0

원래 쿼리도 꽤 가까이 - @ABCade가 언급 한 바와 같이 색인의 성능에 관해서는 그 차이를 테스트 해 볼 수 있습니다 :

SELECT CASE 
     WHEN START_DATE BETWEEN TO_DATE (
           TO_CHAR (START_DATE, 'MM/DD/YYYY') 
           || ' 07:00:00', 
           'MM/DD/YYYY HH24:MI:SS' 
          ) 
         AND TO_DATE (
           TO_CHAR (START_DATE, 'MM/DD/YYYY') 
           || ' 11:59:00', 
           'MM/DD/YYYY HH24:MI:SS' 
          ) 
     THEN 
      'TIME1' 
    END 
+0

존 감사합니다. – cadyT