还有我的笨方法,不过,不存在跨年的问题
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;
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;
trunc()什么意思,是所在星期第n天的日期吗?
trunc(d[,format])
返回结尾到由format指定的单位的日期d
回复人: 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;
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
老大,不是开发效率问题,是错误的问题!
to :mashansj(风影)
你仔细检查一下,你的过程那里有跨年度的解决方案,实际上很简单就可以处理了,再好好想想!
from table1
where rownum<=7;以上假设从星期一开始算,若从星期日开始,把2改成1
from table1
where rownum<=7;以上假设从星期一开始算,若从星期日开始,把2改成1