我正在查询数据库以在30分钟间隔内获得结果
1)假设我在上午11点05分查询,我应该从上午10:30到上午11:00获取数据 2)如果我在11:35查询,我应该从上午11:00到11;凌晨30点得到数据。
简而言之,我正在寻找一个可以循环到前30分钟间隔的查询。
答案 0 :(得分:1)
找出截断到小时开头的SYSDATE
和SYSDATE
之间的差异;如果它超过30分钟(1/48天),则范围的开始是SYSDATE
被截断到最接近的小时,否则它被SYSDATE
截断到最近的小时减去30分钟。该范围的结束仅在30分钟后。
SELECT *
FROM your_table
WHERE date_column >= TRUNC( SYSDATE, 'HH24' )
- CASE WHEN SYSDATE - TRUNC( SYSDATE, 'HH24' ) >= 1/48
THEN 0
ELSE 1/48 END
AND date_column < TRUNC( SYSDATE, 'HH24' )
+ CASE WHEN SYSDATE - TRUNC( SYSDATE, 'HH24' ) >= 1/48
THEN 1/48
ELSE 0 END;
答案 1 :(得分:1)
with abcd as (select to_date('10:05','hh24:mi') test from dual
union all select to_date('10:30','hh24:mi') from dual
union all select to_date('10:31','hh24:mi') from dual
)
select trunc(test,'HH') trunc_date_to_hour , NUMTODSINTERVAL( round((test - trunc(test,'HH'))*24)/2, 'hour') minuts_to_add,trunc(test,'HH')+ NUMTODSINTERVAL( round((test - trunc(test,'HH'))*24)/2, 'hour') from abcd;