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

在网上找到,如:SELECTTO_CHAR(add_months(to_date('2011-03','yyyy-mm'),ROWNUM-1),'YYYY-MM')asy... 在网上找到,如:
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);

我的是oracle9i,我在pl/sql上跑会报,ora-01473:cannot have subqueries in connect by clause,请问还有其它方法实现吗
展开
 我来答
arestoruk
推荐于2017-11-26 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:100%
帮助的人:67.5万
展开全部
这是递归写法的问题,在8,9i升级新版本过程中经常遇到类似问题.这个在10g,11g以后跑应该都没问题,在9i按以下方法写可以实现:
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)
匿名用户
推荐于2018-03-06
展开全部
指定年份到当前年的范围:SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2013', 'yyyy'), (ROWNUM - 1) * 12), 'yyyy') as nd
FROM DUAL
CONNECT BY ROWNUM <=
months_between(to_date(to_char(sysdate,'yyyy'),'yyyy') ,
to_date('2013', 'yyyy')) / 12 + 1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hr_s_pre
2013-08-09 · 超过31用户采纳过TA的回答
知道答主
回答量:87
采纳率:100%
帮助的人:75.5万
展开全部
这个问题是由于你数据库版本过低产生的。

这个错误出现在 CONNECT BY 这个层次查询子句,一般CONNECT BY用于树状或者层次结果集的查询。

推荐,最好是更换数据库,因为现在ORACLE官网你也下载不到9i和10g了。而且版本低有些新加的函数都用不了。

如果非要在9I上修改这句话,很麻烦!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卫而RU
2019-07-30
知道答主
回答量:25
采纳率:0%
帮助的人:2万
展开全部
SELECT to_number(TO_CHAR(add_months(trunc(sysdate,'yy'), ROWNUM - 1),
'MM')) as month
FROM DUAL
CONNECT BY ROWNUM <= (select months_between(trunc(sysdate,'mm'),trunc(sysdate,'yy')) + 1
from dual);
这是我借鉴了一楼的写的,查询截至到当前日期的当年的所有月份
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unmercet
2013-08-12
知道答主
回答量:3
采纳率:0%
帮助的人:2.8万
展开全部
select to_date(item_date,'yyyy-mm') from (
select to_number(months_between(to_date('2012-07','yyyy-mm'),to_date('2011-03','yyyy-mm'))) item_date from dual ) 不行?
追问
谢谢你的回答,不过明显不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式