declare i number:=trunc(sysdate) - trunc(to_date('20080101','yyyymmdd'));---用来输入的日期 time_hour number:=0; temp_hour number:=0; begin for j in 0 .. i loop select decode(to_char(trunc(to_date('20080101','yyyymmdd')+1),'fmday'),'星期天',0,24) into temp_hour from dual; time_hour:=time_hour + temp_hour; end loop; end; /
--manudate是生产日期,算法是先算出总的时间间隔,然后减去其中星期天的天数 --如果生产日期是星期天,那么就要把天数加上1 --4号,5号算两天,所以最后总天数还要加上1 select (sysdate - manudate) - (trunc(sysdate - trunc(manudate, 'day')) / 7, 0) + case trunc(manudate, 'day') when manudate then 1 else 0 end) + 1) * 24 from dual;
--manudate是生产日期,算法是先算出总的时间间隔,然后减去其中星期天的天数 --如果生产日期是星期天,那么就要把天数加上1 --4号,5号算两天,所以最后总天数还要加上1 select (sysdate - manudate) - (trunc(sysdate - trunc(manudate, 'day')) / 7, 0) + case trunc(manudate, 'day') when manudate then 1 else 0 end) + 1) * 24 from dual;
i number:=trunc(sysdate) - trunc(to_date('20080101','yyyymmdd'));---用来输入的日期
time_hour number:=0;
temp_hour number:=0;
begin
for j in 0 .. i loop
select decode(to_char(trunc(to_date('20080101','yyyymmdd')+1),'fmday'),'星期天',0,24) into temp_hour from dual;
time_hour:=time_hour + temp_hour;
end loop;
end;
/
--如果生产日期是星期天,那么就要把天数加上1
--4号,5号算两天,所以最后总天数还要加上1
select (sysdate - manudate) -
(trunc(sysdate - trunc(manudate, 'day')) / 7, 0) +
case trunc(manudate, 'day')
when manudate then
1
else
0
end) + 1) * 24
from dual;
--如果生产日期是星期天,那么就要把天数加上1
--4号,5号算两天,所以最后总天数还要加上1
select (sysdate - manudate) -
(trunc(sysdate - trunc(manudate, 'day')) / 7, 0) +
case trunc(manudate, 'day')
when manudate then
1
else
0
end) + 1) * 24
from dual;