首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询,它可以舍入到之前的30分钟间隔。

查询,它可以舍入到之前的30分钟间隔。
EN

Stack Overflow用户
提问于 2017-07-05 08:33:22
回答 2查看 54关注 0票数 1

我正在查询数据库,以便在30分钟间隔内得到结果。

1)假设我在上午11:05查询,我应该从上午10:30到11:00获得数据)如果我在11:35查询,我应该从上午11:00到11:30得到数据

简而言之,我正在寻找一个查询,它可以舍入到之前的30分钟间隔。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-05 09:20:55

找出截断到小时开始的SYSDATESYSDATE之间的区别;如果它大于30分钟(一天的1/48),则范围的开始是截断到最近的时间的SYSDATE,否则是SYSDATE截断到最近的小时减去30分钟。距离的结束仅在30分钟后。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-07-05 09:23:09

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44920937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档