两个日期之间的小时数的oracle查询
oracle query between two dates with hours
这是我当前的 oracle table:
- 日期 = 日期
- 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
不应该用于约会,但我无法尝试其他机会,因为我不知道如何将 DATE
和 HOUR
放在一起......
谢谢!
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')
(顺便说一句,不要对列名使用保留关键字,但我想这只是一个示例)。
如果要将 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' )
这是我当前的 oracle table:
- 日期 = 日期
- 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
不应该用于约会,但我无法尝试其他机会,因为我不知道如何将 DATE
和 HOUR
放在一起......
谢谢!
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')
(顺便说一句,不要对列名使用保留关键字,但我想这只是一个示例)。
如果要将 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' )