【问题标题】:ORACLE SQL query to get rows of intervals of 30 minutes based on two hoursORACLE SQL 查询以两小时为基础获取间隔为 30 分钟的行
【发布时间】:2019-05-23 21:08:04
【问题描述】:

我需要做一个查询,根据两个小时 start_hour 和 end_hour 给我 30 分钟间隔的行。 我有一张桌子,在这张桌子上我有这​​列“start_hour 和 end_hour”。 假设我有这个
|开始小时 |结束小时 |
|上午 09:00 | 08:00 下午 |
我需要一个给出这样结果的查询。
|间隔 |
|上午 09:00 |
|上午 9:30 |
|上午 10:00 |
|上午 10:30 |
|上午 11:00 |
|上午 11:30 |
|中午 12:00 |
|上午 12:30 |
...
...
...
|下午 7:30 |
| 08:00 下午 |
并且行需要在表中的 te end_hour 值中完成,如示例所示。 有人可以帮我怎么做,我尝试四舍五入 start_hour,但我没有任何结果。

【问题讨论】:

    标签: sql oracle intervals


    【解决方案1】:

    这有点笨拙,需要根据您的具体需求进行一些编辑,但它是我几年前使用的一小段代码,应该可以作为一个坚实的起点:

    select to_char(time_slot,'HH:MIPM') 
      from (select trunc(to_date('05/23/2019','MM/DD/YYYY'))+(rownum-1)*(30/24/60) time_slot 
              from dual 
              connect by level <= (24*2))
     where to_char(time_slot,'HH24:MI') between
        --start_hour
        '09:00'
        and
        --end hour
        '20:00';
    
    OUTPUT
    09:00AM
    09:30AM
    10:00AM
    10:30AM
    11:00AM
    11:30AM
    12:00PM
    12:30PM
    01:00PM
    01:30PM
    02:00PM
    02:30PM
    03:00PM
    03:30PM
    04:00PM
    04:30PM
    05:00PM
    05:30PM
    06:00PM
    06:30PM
    07:00PM
    07:30PM
    08:00PM
    

    【讨论】:

    • 感谢您的回答,我真的希望这对我的问题有所帮助,一旦我获得了我想要的解决方案,我会通知您我是如何做到的。
    猜你喜欢
    • 2019-09-12
    • 2021-08-02
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2017-01-24
    • 2014-01-26
    • 2021-05-14
    相关资源
    最近更新 更多