Oracle时间范围查询



我需要写一个查询,它将在最完成的四分之一小时内进行日期查找。

因此,如果当前时间是5:35,那么标准将是5:15 - 5:30。如果时间是5:46,那么5:30 - 5:45,如果时间是6:02,那么5:45 - 6:00。

不知道如何轻松地做到这一点。

类似

with cqh (dt) as (
select trunc(sysdate, 'hh') + 
trunc(extract(minute from systimestamp) / 15) * interval '15' minute
from   dual
)
select [_data_] from [_your_table_] cross join cqh
where  [_date_column_] >= cqh.dt - interval '15' minute
and  [_date_column_] <  cqh.dt
;

子查询计算最近完成的25小时。它首先将SYSDATE截断到当前小时的开始。然后我们加上15分钟的倍数——乘数是0、1、2或3,这取决于SYSDATE的分钟分量。唉,EXTRACT(MINUTE FROM ...)只适用于时间戳,所以我不得不在那里使用SYSTIMESTAMP而不是SYSDATE,但除此之外,计算应该是相当明显的。

然后交叉连接任何给你"数据"的东西;在这个小助手视图中,使用DT值。

相关内容

  • 没有找到相关文章

最新更新