Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách lấy ngày hoặc giờ làm việc giữa hai ngày

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'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiển thị tên của tất cả các ràng buộc cho một bảng trong Oracle SQL

  2. Làm cách nào để xuất dữ liệu từ Oracle SQL Developer sang Excel?

  3. Trong cơ sở dữ liệu Oracle, sự khác biệt giữa ROWNUM và ROW_NUMBER là gì?

  4. Các giá trị được phân tách bằng dấu phẩy cho hàm IN trong oracle

  5. Thu thập số liệu thống kê tăng dần trong 11g