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

列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环) 博客分类: SQL SQLOracleBlackBerry黑莓 

程序员文章站 2024-03-01 10:37:28
...
oracle中有一个字段rownum,长期以来只知道它是记录的行号,却没有想过用它做更有价值的事情。
有两个时间点,要求列出这两天之间的所有日期,如2010-04-01和2010-04-10,列出
        2010-4-1
        2010-4-2
        2010-4-3
        2010-4-4
        2010-4-5
        2010-4-6
        2010-4-7
        2010-4-8
        2010-4-9

首先想到的是用环循,可是又不能用存储过程,在sql中怎么用循环?rownum帮了大忙了
	    SELECT ROWNUM AS FOR_I 
	    FROM ALL_OBJECTS 
	    WHERE ROWNUM < 10;
	


结果如下:
        FOR_I
        1
        2
        3
        4
        5
        6
        7
        8
        9

正是利用rownum自增1的特性可以实现sql中的循环。
下面实现本文刚开始提的需求,列出两个日期间的所有日期:
	    SELECT TRUNC(TO_DATE('2010-04-01', 'yyyy-mm-dd')) + ROWNUM - 1 AS DATES
	    FROM   ALL_OBJECTS
	    WHERE  TRUNC(TO_DATE('2010-04-01', 'yyyy-mm-dd')) + ROWNUM - 1 <
	           TRUNC(TO_DATE('2010-04-10', 'yyyy-mm-dd'));
	


结果如下:
        DATES
        2010-4-1
        2010-4-2
        2010-4-3
        2010-4-4
        2010-4-5
        2010-4-6
        2010-4-7
        2010-4-8
        2010-4-9

这里从all_objects中查rownum是因为all_objects有足够多的记录并且是系统表不常会被清空,当然数据过多会影响一定的查询速度,如果循环次数不是很多建议选择记录不是很多的表,有助于提高效率。
    如果想改变步长rownum * 2即可。


   
   
列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环)
            
    
    博客分类: SQL SQLOracleBlackBerry黑莓 皇冠信誉◆清风通讯-黑莓体验中心-BLACKBERRY全面支持货到付款列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环)
            
    
    博客分类: SQL SQLOracleBlackBerry黑莓 

   
列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环)
            
    
    博客分类: SQL SQLOracleBlackBerry黑莓 真诚希望朋友们能留下宝贵意见,不甚感激!

上一篇: 封装的概念及必要性

下一篇: