我怎样才能得到一个特定的边缘oracle

问题描述:

之间的小时,我需要得到的时间之间的时间。我的代码如下,但我没有得到完全我需要的结果。 因为它不显示我的一切,都在这个范围内我怎样才能得到一个特定的边缘oracle

SELECT 
    * 
FROM 
    (
     SELECT DISTINCT 
      TO_DATE(TO_CHAR(date_quote,'dd/MM/yy'),'dd/MM/yy') date_quote, 
      TO_DATE(TO_CHAR(start_time,'dd/MM/yyyy HH24:MI:SS'),'dd/MM/yyyy HH24:MI:SS') start_time, 
      TO_DATE(TO_CHAR(end_time,'dd/MM/yyyy HH24:MI:SS'),'dd/MM/yyyy HH24:MI:SS') end_time 

     FROM 
      quote 
     WHERE 
       start_time < to_timestamp('1970/01/01 11:30:00','yyyy/MM/dd HH24:MI:SS') 
      and 
       end_time > to_timestamp('1970/01/01 11:15:00','yyyy/MM/dd HH24:MI:SS') 

     AND 
      date_quote= TO_CHAR(TO_DATE('2017-05-01','yyyy-MM-dd'),'dd/MM/yyyy') 
    ) 
ORDER BY 
    date_quote ASC, 
    start_time ASC; 

我也试图与> = < =的结果,但它并没有给我预期的结果要么

+0

什么样的数据类型是'start_time'和'end_time'?数据是什么样的?您需要向我们展示一些示例数据,以便我们看到您现在和现在期望的区别。 – APC

看来你想要计算完成任务所需的总时间。 所以你可以使用

SELECT * 
FROM 
    (SELECT 
    TO_CHAR(TO_DATE(TO_CHAR(end_time,'dd/MM/yyyy HH24:MI:SS'),'dd/MM/yyyy HH24:MI:SS') - TO_DATE(TO_CHAR(start_time,'dd/MM/yyyy HH24:MI:SS'),'dd/MM/yyyy HH24:MI:SS'),'HH24:MI:SS') total_time_taken 
    FROM quote 
    WHERE start_time < to_timestamp('1970/01/01 11:30:00','yyyy/MM/dd HH24:MI:SS') 
    AND end_time  > to_timestamp('1970/01/01 11:15:00','yyyy/MM/dd HH24:MI:SS')--- kinldy check your condition as end time is less then task start time 
    AND date_quote = TO_CHAR(TO_DATE('2017-05-01','yyyy-MM-dd'),'dd/MM/yyyy') 
) 
ORDER BY date_quote ASC, 
    start_time ASC; 

假设date_quotefecha_apunte_fhstart_timeend_time都是DATETIMESTAMP列和start_time是以前end_time然后

SELECT * 
FROM (
    SELECT DISTINCT 
     TRUNC(date_quote) date_quote, 
     start_time, 
     end_time 
    FROM quote 
    WHERE start_time > TIMESTAMP '1970-01-01 11:15:00' 
    AND end_time < TIMESTAMP '1970-01-01 11:30:00' 
    AND fecha_apunte_fh = DATE '2017-05-01' 
) 
ORDER BY 
    date_quote ASC, 
    start_time ASC;