Dat kan niet. Zo simpel is het. Nationale feestdagen variëren over de hele wereld, ze variëren van jaar tot jaar en er kunnen op elk moment extra worden toegevoegd of weggenomen. Bovendien dragen sommige rechtsgebieden nationale feestdagen die in het weekend vallen over en hebben ze de volgende week; anderen niet.
U moet een kalendertabel maken en hierin nationale feestdagen/weekends enz. markeren.
Bijvoorbeeld
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
Voeg er dan wat gegevens in...
insert into calender (day, weekend)
select trunc(sysdate + level)
, case when to_date(sysdate + level,'fmDAY') in ('SATURDAY','SUNDAY')
then 'Y' else 'N' end
from dual
connect by level <= 365
Werk ten slotte handmatig bij wat u daar als nationale feestdag beschouwt.
Je kunt dan werkdagen selecteren, afhankelijk van hoe je het hebt ingevuld met zoiets als dit:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'