Kᴀτ*_*ᴀτᴢ 5 sql oracle date-arithmetic
这是我当前的oracle表:
我需要查询以获取两个日期之间的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在一起...谢谢!
好吧,您可以通过这种方式在您的现场日期中添加小时
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)
(顺便说一句,不要对列名使用保留关键字,但我想这只是一个示例)。
一个日期有日期和时间元素。要增加到目前为止的小时数,您只需要做一些数学运算即可。
例如,
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。
| 归档时间: |
|
| 查看次数: |
35746 次 |
| 最近记录: |