Bạn không thể. Nó đơn giản như vậy. Các ngày lễ quốc gia khác nhau trên thế giới, chúng thay đổi theo từng năm và những ngày lễ bổ sung có thể được thêm vào hoặc lấy đi bất cứ lúc nào. Ngoài ra, một số khu vực pháp lý thực hiện các ngày lễ quốc gia rơi vào cuối tuần và có chúng vào tuần tiếp theo; những người khác thì không.
Bạn sẽ cần tạo một bảng lịch và gắn cờ các ngày lễ / cuối tuần của quốc gia, v.v. trong bảng này.
Ví dụ
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
Sau đó, chèn một số dữ liệu vào đó ...
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
Cuối cùng, hãy cập nhật thủ công những gì bạn tính là ngày lễ quốc gia ở đó.
Sau đó, bạn có thể chọn ngày làm việc, tùy thuộc vào cách bạn điền vào ngày làm việc như sau:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'