You can't. It's as simple as that. National holidays vary the world over, they vary year by year and extra ones can be added or taken away at any time. Additionally some jurisdictions carry over national holidays that fall on the weekend and have them the next week; others don't.
You'll need to create a calender table and flag national holidays / weekends etc in this.
For instance
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
Then insert some data into it...
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
Lastly, manually update what you count as a national holiday in there.
You can then select working days, depending on how you populated it with something like this:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…