还有我的笨方法,不过,不存在跨年的问题
drop table da_yyyymmdd;                
create table da_yyyymmdd(rq char(8) PRIMARY KEY);    declare
i int;
j varchar2(8);
m varchar2(8);
n varchar2(8);
begin
j:='20010101';  --所在的年
for i in 1..365 loop
m:=to_char(sysdate,'ww');
n:=to_char(to_date(j,'yyyymmdd'),'ww');
if m=n then
insert into da_yyyymmdd values(j);
end if;
j:=to_char(to_date(j,'yyyymmdd')+1,'yyyymmdd');
end loop;
end;select * from da_yyyymmdd;

解决方案 »

  1.   

    to:MountLion(人不寐) 
    trunc()什么意思,是所在星期第n天的日期吗?   
      

  2.   

    trunc()
    trunc(d[,format])
    返回结尾到由format指定的单位的日期d
      

  3.   

    我认为下面的回复最好. 要知道, 程序开发不是程序研究, 这么简单的语句为什么不用?!凡是我经手的项目, 我都会支持下面这样的算法. 使用存储过程以及临时表才是自找麻烦.
    回复人: MountLion(人不寐) (2001-10-17 10:48:24)  得0分 
    Oracle中……,来个最笨的:
    select d from(
    select sysdate-6 d from dual
    union all
    select sysdate-5 d from dual
    union all
      ...
    union all 
    select sysdate+5 d from dual
    union all
    select sysdate+6 d from dual
    )
    where to_char(sysdate,'w')=to_char(d,'w')
    order by d;
      

  4.   

    那这段那?
    select to_char(trunc(sysdate,'ww'),'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+1,'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+2,'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+3,'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+4,'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+5,'yyyy-mm-dd'), 
      to_char(trunc(sysdate,'ww')+6,'yyyy-mm-dd')
    from dual
      

  5.   

    butian(不天)的语句也能得到那些数据, 不过帖主需要的是一个列表便于使用. 呵呵
      

  6.   

    to: nononono(null,null) 
    老大,不是开发效率问题,是错误的问题!
    to :mashansj(风影) 
    你仔细检查一下,你的过程那里有跨年度的解决方案,实际上很简单就可以处理了,再好好想想!
      

  7.   

    跨年解决方案:select next_day(sysdate,2)-7+rownum-1
    from table1
    where rownum<=7;以上假设从星期一开始算,若从星期日开始,把2改成1
      

  8.   

    跨年解决方案:select next_day(sysdate,2)-7+rownum-1
    from table1
    where rownum<=7;以上假设从星期一开始算,若从星期日开始,把2改成1
      

  9.   

    very good!不知道怎么实现的!牛x