当前时间的条件大于或等于时间和当前时间小于或等于ORACLE中的时间

时间:2015-05-15 07:10:55

标签: sql oracle oracle11g date-arithmetic

条件不起作用因为使用TO_CHAR(),但如何提取时间?以下是我的询问:

select sum (FREIGHT * STAX_RATE / 100)
from (select INVM.FREIGHT as FREIGHT , MAX(INVT.STAX_RATE) as STAX_RATE
      from invm inner join INVT on INVM.I_B_NO = INVT.I_B_NO
      where invm.i_b_dt between '04/01/2015 00:00:00' and '04/01/2015 00:00:00'
      group by INVM.FREIGHT)

2 个答案:

答案 0 :(得分:3)

看起来您只对时间感兴趣,但对日期部分不感兴趣。假设FROM_TIMETO_TIME的数据类型为DATETIMESTAMP,您可以这样做:

select *
FROM SUPPLY_TIMING
WHERE EXTRACT(HOUR FROM SYSDATE) + EXTRACT(MINUTE FROM SYSDATE)/60 
   BETWEEN EXTRACT(HOUR FROM FROM_TIME) + EXTRACT(MINUTE FROM FROM_TIME)/60
       AND EXTRACT(HOUR FROM TO_TIME) + EXTRACT(MINUTE FROM TO_TIME)/60

答案 1 :(得分:0)

乍一看,我的猜测是你的格式掩码是造成问题的原因。 HH组件会以12小时格式为您提供时间,因此下午1点将返回01,我认为如果您使用HH24,则会获得13,使字符串比较按预期工作:

SELECT *
FROM SUPPLY_TIMING
WHERE TO_CHAR (SYSDATE, 'HH24:Mi') >= TO_CHAR (FROM_TIME, 'HH24:Mi')
AND TO_CHAR (SYSDATE, 'HH24:Mi') <= TO_CHAR (TO_TIME, 'HH24:Mi')