Workday
From Oracle FAQ
Workday is a PL/SQL function that simulates the Excel workday() function. It returns the date that is a number of working days before or after the starting date. Working days exclude weekends. This function can be used to calculate invoice due dates, expected delivery times, or the number of days of work performed.
CREATE OR REPLACE FUNCTION workday(start_date DATE, days NUMBER)
RETURN DATE
IS
i NUMBER := 0;
tot NUMBER := 0;
BEGIN
IF days = 0 THEN
RETURN start_date;
END IF;
WHILE true LOOP
IF days > 0 THEN
i := i + 1;
ELSE
i := i - 1;
END IF;
IF TO_CHAR(start_date + i, 'FMDAY') NOT IN ('SATURDAY', 'SUNDAY') THEN
tot := tot + 1;
END IF;
IF abs(tot) = abs(days) THEN
exit;
END IF;
END LOOP;
RETURN start_date + i;
END workday;
/
show errors
