我正在查询数据库,以便在30分钟间隔内得到结果。
1)假设我在上午11:05查询,我应该从上午10:30到11:00获得数据)如果我在11:35查询,我应该从上午11:00到11:30得到数据
简而言之,我正在寻找一个查询,它可以舍入到之前的30分钟间隔。
发布于 2017-07-05 09:20:55
找出截断到小时开始的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;发布于 2017-07-05 09:23:09
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;https://stackoverflow.com/questions/44920937
复制相似问题