如何得到生产日期(格式yyyy/mm/dd)距现在(sysdate)这段时间内除去星期天后的小时数,多谢各位......

解决方案 »

  1.   

    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;
    /
      

  2.   

    --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;
      

  3.   

    --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;