如何在Oracle中生成以分钟为间隔的日期范围序列? [英] How to generate series for date range with minutes interval in oracle?
本文介绍了如何在Oracle中生成以分钟为间隔的日期范围序列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在下面的postgres中,查询使用GENERATE_SELECTION函数工作
SELECT dates
FROM generate_series(CAST('2019-03-01' as TIMESTAMP), CAST('2019-04-01' as TIMESTAMP), interval '30 mins') AS dates
下面的查询也在Oracle中工作,但仅限于日期间隔
select to_date('2019-03-01','YYYY-MM-DD') + rownum -1 as dates
from all_objects
where rownum <= to_date('2019-03-06','YYYY-MM-DD')-to_date('2019-03-01','YYYY-MM-DD')+1
SELECT dates
FROM generate_series(CAST('2019-03-01' as TIMESTAMP), CAST('2019-04-01' as TIMESTAMP), interval '30 mins') AS dates
我希望Oracle中以下查询的结果相同
SELECT dates
FROM generate_series(CAST('2019-03-01' as TIMESTAMP), CAST('2019-04-01' as TIMESTAMP), interval '30 mins') AS dates
推荐答案
使用分层查询:
SELECT DATE '2019-03-01' + ( LEVEL - 1 ) * INTERVAL '30' MINUTE AS dates
FROM DUAL
CONNECT BY DATE '2019-03-01' + ( LEVEL - 1 ) * INTERVAL '30' MINUTE <= DATE '2019-04-01';
输出:
| DATES | | :------------------ | | 2019-03-01 00:00:00 | | 2019-03-01 00:30:00 | | 2019-03-01 01:00:00 | | 2019-03-01 01:30:00 | | 2019-03-01 02:00:00 | | 2019-03-01 02:30:00 | | 2019-03-01 03:00:00 | | 2019-03-01 03:30:00 | | 2019-03-01 04:00:00 | | 2019-03-01 04:30:00 | | 2019-03-01 05:00:00 | | 2019-03-01 05:30:00 | ... | 2019-03-31 19:30:00 | | 2019-03-31 20:00:00 | | 2019-03-31 20:30:00 | | 2019-03-31 21:00:00 | | 2019-03-31 21:30:00 | | 2019-03-31 22:00:00 | | 2019-03-31 22:30:00 | | 2019-03-31 23:00:00 | | 2019-03-31 23:30:00 | | 2019-04-01 00:00:00 |
数据库<;>小提琴here
这篇关于如何在Oracle中生成以分钟为间隔的日期范围序列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文