Re: Calculating # of working days in a period.
From: Dave Jordan <jordan_at_pt5026.pto.ford.com>
Date: 1 Nov 1994 14:52:08 GMT
Message-ID: <395kmo$qvk_at_eccdb1.pms.ford.com>
Date: 1 Nov 1994 14:52:08 GMT
Message-ID: <395kmo$qvk_at_eccdb1.pms.ford.com>
Ooops, left distribution local, so here it is again.
Here is a procedure we use to add a given number of working days to the current date:
NAME = workdate DEFINITION = <<< FUNCTION workdate (start_date IN date, add_days IN number) return date IS /* This function adds a number of working days (add_days) */ /* to a date (start_date) and returns it (end_date) */ end_date date; day_name char(3); working_days number(5); dummy date; CURSOR holiday IS select holiday from dbs.ford_holidays where holiday = end_date; BEGIN working_days := 0; end_date := start_date; while (working_days < add_days) LOOP end_date := end_date + 1; day_name := to_char(end_date,'DY'); if day_name != 'SAT' and day_name != 'SUN' then open holiday; fetch holiday into dummy; if holiday%NOTFOUND then working_days := working_days + 1; end if; close holiday; end if; end LOOP; return (end_date); EXCEPTION when OTHERS then null; END;
>>>
A table holds the holidays, as they change year to year for us. A slight modification to this will allow you to enter the start and end dates and return the number of workdays between. Instead of looping on add_days, loop until end_date and add up the days in the loop.
Dave Jordan Received on Tue Nov 01 1994 - 15:52:08 CET