Trước tiên, bạn phải tính xem thứ hai tuần trước là bao nhiêu ngày trước, bằng cách sử dụng DAYOFWEEK
, sau đó lấy ngày hiện tại trừ đi -
SELECT * from table
WHERE date >= DATE_SUB(CURDATE(),INTERVAL MOD(DAYOFWEEK(CURDATE())-2,7) DAY)
AND date <= DATE_ADD(CURDATE(), INTERVAL MOD(7 - (DAYOFWEEK(CURDATE()) - 1), 7) DAY)
Tôi không chắc 100% về các con số +/- ở đây, mặc dù vậy, bạn sẽ có thể tìm ra từ điều này
CHỈNH SỬA:Nếu tính năng này chỉ chạy vào chủ nhật vào cuối kỳ, thì có một phiên bản đơn giản hơn nhiều -
SELECT * from table
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
AND date <= CURDATE()