SQL Query在几分钟和几天之间获取数据

时间:2014-10-30 09:23:41

标签: sql oracle

我有要求,这是报告。

要求说明:

需要表格处于开放状态超过30分钟的数据

嗯,上述要求可以从

获得
select * 
from xyz 
where status = 'OPEN' 
and last_update_date <= sysdate - (30/1440) --30 is minutes and its a parameter

上述查询将从开始到sysdate - (30/1440)获取所有处于OPEN状态的数据。所以我想修改查询以限制完整的数据,添加另一个参数,如DAY

例如,如果我将10作为日期,它应该仅在过去10天和sysdate-30分钟内获取所有数据。 我们应该使用last_update_date列来限制日期。

如果我没有给任何一天作为输入,如果应该从sysdate-30分钟获取所有记录。 如果我不给分钟,它应该以OPEN状态获取所有记录。

问题是否足够明确?我的英语不好。

请建议我查询..

2 个答案:

答案 0 :(得分:2)

只需使用OR表达式检查参数是否为NULL:

select * 
from xyz 
where status = 'OPEN' 
and (last_update_date <= sysdate - (:minutes/1440) or :minutes is null)
and (trunc(last_update_date) >= trunc(sysdate - :days) or :days is null)

答案 1 :(得分:1)

此查询未经过测试。 请告诉我这个查询正在返回我错过的任何错误或错误。

select 
    * 
from 
    xyz 
where 
    status = 'OPEN' 
    and
    last_update_date <= CASE WHEN @No_Of_Days <> 0 THEN sysdate - @No_Of_Days ELSE NULL END
    and     
    minutes(last_update_date) <=  SYSDATE - 30/1440 
相关问题