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

供稿:hz-xin.com     日期:2024-05-04
ORACLE如何 用SQL语句 列出两个月份间的所有月份。

大概是这样:

select add_month(to_char(to_date('201210','yyyymm'),'yyyymm') + level -1)from dual connect by level < months_between(to_date('201212','yyyymm'),to_date('201210','yyyymm')) +1;

如下是列出2016年11月份的所有日期
SELECT TO_CHAR(TO_DATE('2016/11/1', 'YYYY/MM/DD') + ROWNUM - 1, 'YYYY/MM/DD') FROM DUALCONNECT BY ROWNUM <= (add_months(TO_DATE('2016/11/1', 'YYYY/MM/DD'),1) - TO_DATE('2016/11/1', 'YYYY/MM/DD'));

这是递归写法的问题,在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)

指定年份到当前年的范围: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

这个问题是由于你数据库版本过低产生的。

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

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

如果非要在9I上修改这句话,很麻烦!!

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);
这是我借鉴了一楼的写的,查询截至到当前日期的当年的所有月份

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 ) 不行?

Oracle查询一段日期内的星期的日期..例如我要查2011-3-18至2011-3-30...
答:where rownum <= to_date('2011-03-30','yyyy-mm-dd') - to_date('2011-03-18','yyyy-mm-dd') + 1 ) t where to_char(tdate,'day') = '星期一'其中t表是构建你需要的这一个时间段的日期列表, ...

ORACLE数据库,知道数据存储站点表名,怎么导出某年某月某日时间段内的...
答:根据你所提供的信息,我给你提供最详细的步骤如下:把要导出的目标数据复制到另一个表(新建一个,表结构一样)中,语句如下:create table t2 as select * from t1 where 某年某月某日时间段内的该站点;导出这个表:...

oracle 查询时间段每一天日期。
答:查询时间段每一天的日期用如下语句。如要查询2015年1月1日到2015年1月15日每一天的日期。with t as(select rownum-1 rn from dual connect by rownum<=100)select to_date('2015-01-01','yyyy-mm-dd')+rn from ...

在oracle中如何实现查询某一时间段的数据?
答:select * from tab where dtcol between to_date('2012-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2012-05-31 00:00:00','yyyy-mm-dd hh24:mi:ss')...

oracle-sql如何查出:一段时间内(输入时间区间),某数据,连续7天内出现...
答:这个就是出现了5次,因为:四行+本身=5次,只要证明这5次发生在7天内就可以了。(4)所以最后一步就是利用lead的列-原来的时间列小于等于6就可以了,只要小于等于6,那么就符合条件(因为相减为7那么是8天,所以要相减...

oracle 查询语句,时间范围
答:sql = "select * from table1 where time >= TO_DATE('" + d1 + "','yyyy-MM-dd-hh-mi-ss') and time <= TO_DATE('" + d2 + "','yyyy-MM-dd-hh-mi-ss')";--time字段的格式确认是yyyy-MM-dd...

oracle里如何查询一段时间内的数据,我拿到的是日期字符串
答:如果你只是要查询某一天的数据可以这样写and trunc(zxsj) = to_date('"+zxzxConditionBean.getZxsjq()+"','yyyy-mm-dd')"

oracle根据选择的时间范围查询相应的数据
答:from TableA where to_char(startDate,'YYYY-MM-DD')>='2011-09-01' and to_char(endDate,'YYYY-MM-DD')<='2011-09-012' ;另外如果是程序里面用可以做绑定参数,免得每次都解析SQL语句,可以减少查询时间 ...

如何查询Oracle在某个时间点向那些表写入数据
答:oracle 查询日期区间内的数据一般最常用的就是between and 和>=,= to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') and t.日期列 = 和和

oracle 查询一段时间内每一天的统计数据sql怎么写
答:可以写一个简单的procedure来实现,原理是遍历日期范围,并查询日期资料笔数,写入表。数据源表test03 1 2016-06-01 1 2 2016-06-02 1 3 2016-06-05 1 4 2016-06-04 1 5 2016-06-04...