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

Cách đếm chênh lệch ngày không bao gồm cuối tuần và ngày lễ trong MySQL

Bạn có thể muốn thử điều này:

  1. Đế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.

  2. 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.

  3. 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn thiết kế cơ sở dữ liệu cho sự kiện lịch và lời nhắc trong MySQL

  2. Vệ sinh hiệu quả văn bản đã nhập của người dùng

  3. Truy vấn MySQL để tìm những khách hàng đã đặt hàng hai sản phẩm cụ thể

  4. Symfony2:Không tìm thấy bảng cơ sở hoặc chế độ xem:1146

  5. Menu lưu trữ blog PHP MYSQL theo năm và tháng