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

「8:00:00 AM」のように Start_Date フィールドから時間情報のみを取得したい。時間間隔を決めたいので

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'

しかし、うまくいきません!これどうやってするの ?

ありがとう

4

2 に答える 2

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
于 2012-06-17T22:40:55.047 に答える
0

次のようにしてみてください。

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

これにより、DB が start_date にインデックスを使用できなくなる可能性があることに注意してください。

于 2012-06-17T06:50:59.637 に答える