Bạn có thể muốn thử điều này:
-
Đếm số ngày làm việc (lấy từ tại đây )
SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1)
Điều này mang lại cho bạn 261 ngày làm việc trong năm 2012.
-
Bây giờ, bạn cần biết những ngày nghỉ của mình không vào cuối tuần
SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6
Kết quả của việc này phụ thuộc vào bảng ngày nghỉ của bạn.
-
Chúng tôi cần đạt được điều đó trong một truy vấn:
SELECT 5 * (DATEDIFF('2012-12-31', '2012-01-01') DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2012-01-01') + WEEKDAY('2012-12-31') + 1, 1) - (SELECT COUNT(*) FROM holidays WHERE DAYOFWEEK(holiday) < 6)
Đây sẽ là nó.
Chỉnh sửa: Xin lưu ý rằng điều này chỉ hoạt động đúng nếu ngày kết thúc của bạn cao hơn ngày bắt đầu của bạn.