All pastes #341411 Raw Edit

Untitled

public text v1 · immutable
·published 2007-02-05 16:49 UTC
rendered paste body
 function Prev_date (item : in Date)
                     return Date is
     Prevdate : Date;
  begin
     Prevdate := item;

     case Item.Month is
        when 1 =>
           if Item.Day = 1 then
              Prevdate.Year := Item.Year - 1;
              Prevdate.Month := 12;
              Prevdate.Day := 31;
           else
              Prevdate.Month := Item.Month;
              Prevdate.Day := Item.Day - 1;
           end if;

        when  2|5|7|10|12 =>
           if Item.Day = 1 then
              Prevdate.Month := Item.Month -1;
             Prevdate.Day := 30;
           else
              Prevdate.Month := Item.Month;
              Prevdate.Day := Item.Day - 1;
           end if;
        when  3 =>
           if Item.Day = 1 then
              Prevdate.Month := Item.Month -1;
              Prevdate.Day := 28;
           else
              Prevdate.Month := Item.Month;
              Prevdate.Day := Item.Day - 1;
           end if;
        when others =>
           if Item.Day = 1 then
              Prevdate.Month := Item.Month -1;
              Prevdate.Day := 31;
           else
              Prevdate.Month := Item.Month;
              Prevdate.Day := Item.Day - 1;
           end if;
     end case;
     return Prevdate;
  end Prev_date;