欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 列出指定时间范围内的所有月份

程序员文章站 2022-06-07 11:51:21
...
今天在做一个系统的时候要到这么一个需求:

按月份统计出指定时间范围内的数据量,写好sql后执行发现当某个月份不存在数据时,这个月份在统计列表中就不会出现。所以要想办法将给出的时间范围内的所有月份列出来然后和之前的统计结果做一个左关联就OK了。

核心代码:

第一种方法:

SELECT TO_CHAR(
add_months(to_date('2011-03', 'yyyy-mm'), ROWNUM - 1),
'YYYY-MM'
) as yearMonth
FROM DUAL
CONNECT BY ROWNUM <= (
select months_between(to_date('2012-07', 'yyyy-mm'),
to_date('2011-03', 'yyyy-mm')) from dual
)


第二种方法:

SELECT TO_CHAR(
add_months(to_date('2011-03', 'yyyy-mm'), ROWNUM - 1),
'YYYY-MM'
) as yearMonth
FROM all_objects
where ROWNUM <= (
select months_between(to_date('2012-07', 'yyyy-mm'),
to_date('2011-03', 'yyyy-mm')) from dual
)
相关标签: oracle java