我想通过一段sql来显示这样一个日期临时表2009-7-1
2009-7-2
2009-7-3
2009-7-4这样一个临时表如何产生。

解决方案 »

  1.   

    这段sql之前不是有人问过么
    select to_date('2009-07-01', 'yyyy-mm-dd') - 1 + rownum dt
          from all_objects
          where rownum <= to_date('2009-07-05', 'yyyy-mm-dd') 
                        - to_date('2009-07-01', 'yyyy-mm-dd')
                        + 1;
      

  2.   

    楼主是来散分的
    http://topic.csdn.net/u/20090727/18/3b0e737c-da54-4cfa-9b44-1b6115cd3290.html
      

  3.   

    SELECT rownum id,
            TO_DATE('2009-07-01','YYYY-MM-DD')-1 + ROWNUM AS SERIESDATE FROM DUAL 
    CONNECT BY rownum <=TO_DATE('2009-07-04','YYYY-MM-DD')-TO_DATE('2009-07-01','YYYY-MM-DD')+1
      

  4.   

    不知道为什么把all_objects这个视图表引进来?我提供一个select to_date('2009-07-01', 'yyyy-mm-dd') + (rownum -1) "date" from dual connect by to_date('2009-07-01', 'yyyy-mm-dd') + (rownum -1) <= to_date('2009-07-05', 'yyyy-mm-dd');
      

  5.   


    inthirties 的赞一个
      

  6.   

    唉,因为之前那个帖子里面我这么写他的oracle下面跑出来结果不对http://topic.csdn.net/u/20090727/18/3b0e737c-da54-4cfa-9b44-1b6115cd3290.html6楼
      

  7.   

    我的oracle版本是9i,怎么执行
    select to_date('2009-07-01', 'yyyy-mm-dd') + (rownum -1) "date" from dual connect by to_date('2009-07-01', 'yyyy-mm-dd') + (rownum -1) <= to_date('2009-07-05', 'yyyy-mm-dd'); 
     
    后只显示了1条记录
    date
    2009-7-1
      

  8.   

    测试过了...
    shiyiwan 说得对,
    select to_date('2009-07-01', 'yyyy-mm-dd') - 1 + rownum dt
          from all_objects
          where rownum <= to_date('2009-07-05', 'yyyy-mm-dd') 
                        - to_date('2009-07-01', 'yyyy-mm-dd')
                        + 1;
    才正确
      

  9.   


    又必要这个功能把all_objects这个表引入进来做查询么。这不是个好的方案,用connect by的方式,在10g上可以可以出现结果的,不过把2009-7-5也选出来叻所以需要修改一下
    connect by to_date('2009-07-01', 'yyyy-mm-dd') + (rownum -1) < to_date('2009-07-05', 'yyyy-mm-dd'); 
    把 <= 改成 <现在没有9i的环境,回去我在9i上试试。不过9i应该支持叻connect by,怎么会只有一条记录叻。