2012-06-17 81 views
0

我在Oracle 10.6上有一個表TIME_TABLE。此表上有一個名爲Start_Date的字段。將日期字段分爲時間和日期Oracle

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

試試這樣說:

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

相關問題