Du kannst nicht. So einfach ist das. Nationale Feiertage sind weltweit unterschiedlich, sie variieren von Jahr zu Jahr und zusätzliche Feiertage können jederzeit hinzugefügt oder entfernt werden. Darüber hinaus übertragen einige Gerichtsbarkeiten nationale Feiertage, die auf das Wochenende fallen, und haben sie in der nächsten Woche. andere nicht.
Sie müssen eine Kalendertabelle erstellen und darin nationale Feiertage / Wochenenden usw. markieren.
Zum Beispiel
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
Dann fügen Sie einige Daten ein...
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
Aktualisieren Sie zuletzt manuell, was Sie dort als Nationalfeiertag zählen.
Sie können dann Arbeitstage auswählen, je nachdem, wie Sie sie etwa so ausgefüllt haben:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'