两个日期之间的小时数的oracle查询

oracle query between two dates with hours

这是我当前的 oracle table:

我需要一个查询来获取 RUN_DURATION 两个日期 之间的时间 就像

Select * from Datatable where DATE BETWEEN to_date('myStartDate', 'dd/mm/yyyy hh24:mi:ss') + HOURS? and to_date('myEndDate', 'dd/mm/yyyy hh24:mi:ss') + HOURS?

例如 30.10.14 11:00:00 和 30.10.14 15:00:00

之间的所有数据

我坚持按日期计算时间。我尝试将小时数添加到 myStartDate 中,但由于 BETWEEN,这将被忽略作为开始日期。 我知道 BETWEEN 不应该用于约会,但我无法尝试其他机会,因为我不知道如何将 DATEHOUR 放在一起...... 谢谢!

A DATE 具有日期和时间元素。要将小时数添加到日期,您只需要做一些数学运算。

例如,

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> SELECT SYSDATE, SYSDATE + 1/24 FROM dual;

SYSDATE             SYSDATE+1/24
------------------- -------------------
2015-08-14 15:02:59 2015-08-14 16:02:59

系统日期增加 1 小时。因此,如果您有一列日期数据类型,只需添加 要添加的小时数除以 24 因为您将 天数 添加到一个约会。因此,您只需要先将小时数转换为日期 hours/24.

好吧,您可以通过这种方式将小时添加到您的现场日期

select "DATE" + (hour / 24) from <yourTable>

这会给你(从你的第一个样本开始,根据你的格式可能会有所不同)

August, 14 2015 10:00:00 
August, 14 2015 08:00:00 

在此基础上,您可以根据需要在 select 之间执行任何操作。

你的情况

where "DATE" + (hour / 24 )

这将使

Select * 
from Datatable 
where "DATE" + (hour / 24 )
 BETWEEN to_date('30/10/2014 11:00:00', 'dd/mm/yyyy hh24:mi:ss')  and            
         to_date('30/10/2014 15:00:00', 'dd/mm/yyyy hh24:mi:ss') 

SqlFiddle

(顺便说一句,不要对列名使用保留关键字,但我想这只是一个示例)。

如果要将 min 添加到 date,可以使用 interval

select sysdate, sysdate + interval '1' hour from dual

所以,

Select * 
from Datatable 
where 
DATE BETWEEN myStartDate + interval to_char(HOURS) hour 
and myEndDate + interval to_char(HOURS) hour
SELECT * 
FROM table 
WHERE date BETWEEN start_date +  NUMTODSINTERVAL( hour, 'HOUR' ) AND end_date +  NUMTODSINTERVAL( hour, 'HOUR' )