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

Kᴀτ*_*ᴀτᴢ 5 sql oracle date-arithmetic

这是我当前的oracle表:

  • DATE =日期
  • HOUR =数字
  • RUN_DURATION =数字

在此处输入图片说明

我需要查询以获取两个日期之间的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在一起...谢谢!

Rap*_*aus 9

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

select "DATE" + (hour / 24) from <yourTable>
Run Code Online (Sandbox Code Playgroud)

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

August, 14 2015 10:00:00 
August, 14 2015 08:00:00 
Run Code Online (Sandbox Code Playgroud)

基于此,您可以在两者之间进行任何操作,选择您需要的。

在你的情况下

where "DATE" + (hour / 24 )
Run Code Online (Sandbox Code Playgroud)

这将使

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') 
Run Code Online (Sandbox Code Playgroud)

SqlFiddle

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


Lal*_*r B 5

一个日期有日期和时间元素。要增加到目前为止的小时数,您只需要做一些数学运算即可。

例如,

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
Run Code Online (Sandbox Code Playgroud)

将sysdate加1小时。因此,如果您有一列日期数据类型,则只需添加要添加的小时数除以24,因为您要在日期中添加天数。因此,您只需要先将小时数转换为date即可hours/24