Biểu thức của bạn ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate()))
chỉ trả về phần ngày của ngày tuần trước, vì vậy tất cả dữ liệu sau ngày bắt đầu ngày này không được bao gồm.
Bạn có một số lựa chọn để giải quyết vấn đề này:
- Vòng đã tạo
SELECT *
FROM your_table
WHERE DATE(createdAt) BETWEEN
SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate()));
- Sử dụng tình trạng ít mạnh hơn với ngày hôm sau:
SELECT *
FROM your_table
WHERE
createdAt >= SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
createdAt < ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 7-WEEKDAY(curdate()));