Bạn cần sử dụng chức năng DAYOFWEEK
Nếu kết thúc tuần vào thứ bảy, bất kỳ ngày nào cũng có thể biến thành ngày thứ bảy.
Ví dụ: cái này tính vào thứ bảy sắp tới
SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
Điều này sẽ tính vào Chủ nhật sắp tới ( thay vào đó bạn phải sử dụng chức năng WEEKDAY )
SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY);
Đối với một bảng được gọi là mytable với Cột ngày được gọi là Ngày, tổng của bạn sẽ là
ngày thứ bảy
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
chủ nhật
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Hãy thử một lần !!!
Nếu bạn muốn bất kỳ cuối tuần nào khác ngoài thứ bảy và chủ nhật, tôi đã viết một thuật toán điên rồ vào ngày 22 tháng 9 năm 2011 để tính toán bất kỳ tuần nào bắt đầu và kết thúc bất cứ ngày nào .