Nemůžeš. Je to tak jednoduché. Státní svátky se po celém světě liší, liší se rok od roku a navíc lze kdykoli přidat nebo odebrat. Některé jurisdikce navíc přenášejí státní svátky, které připadají na víkend, a mají je příští týden; ostatní ne.
Budete muset vytvořit tabulku kalendáře a označit státní svátky / víkendy atd.
Například
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
Pak do něj vložte nějaká data...
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
Nakonec ručně aktualizujte, co tam považujete za státní svátek.
Poté můžete vybrat pracovní dny v závislosti na tom, jak jste jej naplnili něčím takovým:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'