在网上找到,如:
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,请问还有其它方法实现吗
oracle列出指定时间范围内的所有月份?
答案:4 悬赏:80 手机版
解决时间 2021-02-02 00:55
- 提问者网友:我的未来我做主
- 2021-02-01 09:24
最佳答案
- 五星知识达人网友:鱼忧
- 2021-02-01 09:58
指定年份到当前年的范围: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
FROM DUAL
CONNECT BY ROWNUM <=
months_between(to_date(to_char(sysdate,'yyyy'),'yyyy') ,
to_date('2013', 'yyyy')) / 12 + 1
全部回答
- 1楼网友:廢物販賣機
- 2021-02-01 13:22
当前月数量 select sum(数量) from 表名 where to_char(时间,'yyyy-mm')=to_char(sysdate,'yyyy-mm') 指定时间段内数量,比如10月1日0点0分0秒到10月3日23点59分59秒 select sum(数量) from 表名 where to_char(时间,'yyyy-mm-dd hh24:mi:ss')between '2013-10-01 00:00:00' and '2013-10-03 23:59:59'
- 2楼网友:撞了怀
- 2021-02-01 11:50
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楼网友:猎心人
- 2021-02-01 11:13
这是递归写法的问题,在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)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯