我在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 :(得分:0)
试试这样:
CASE
WHEN to_char(start_date, 'hh24miss') BETWEEN '070000' AND '115900'
请注意,这可能会阻止DB在start_date上使用索引
答案 1 :(得分:0)
您的原始查询也非常接近 - 正如@ A.B.Cade提到的索引性能,您可以测试它与它之间的区别:
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