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

tính các ngày thứ Bảy trước 15 ngày là ngày làm việc và bỏ qua những ngày khác

Bạn có thể sử dụng mã dưới đây để đếm ngày làm việc theo yêu cầu của bạn -

CREATE FUNCTION FN_CNT_Working_days(StartDate DATE,
                                    EndDate   DATE) 
RETURNS INT
BEGIN
     DECLARE WORKING_DAYS INT;
     SELECT
   (DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) + 1)
  -(FLOOR(DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16)))/7) * 2)
  -(CASE WHEN DAYNAME(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) = 'Sunday' THEN 1 ELSE 0 END)
  -(CASE WHEN DAYNAME(EndDate) = 'Saturday' THEN 1 ELSE 0 END) 
   +
   (DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate) + 1)
  -(FLOOR(DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate)/7))
  -(CASE WHEN DAYNAME(StartDate) = 'Sunday' THEN 1 ELSE 0 END)
     INTO WORKING_DAYS;

     RETURN (WORKING_DAYS);
END;

Tại đây là sự khó khăn. Ngoài ra, bạn cần quan tâm đến các ngày nghỉ cùng với mã này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kết nối thang máy và MySQL?

  2. Lỗi SQL # 1071 - Khóa được chỉ định quá dài; độ dài khóa tối đa là 767 byte

  3. PHP Tập lệnh đăng nhập lần cuối

  4. Cột BLOB / TEXT 'giá trị' được sử dụng trong đặc tả khóa không có độ dài khóa

  5. MySQL lưu trữ thủ tục so với chức năng, tôi sẽ sử dụng cái nào khi nào?