Bạn có thể tận dụng WEEKDAY()
trả về một số đại diện cho ngày trong tuần (0 =Thứ Hai, 6 =Chủ Nhật) và một số phép toán đơn giản để viết lại truy vấn này.
Trừ ngày trong tuần bạn muốn tuần bắt đầu (trong trường hợp của bạn là 4 =Thứ Năm) từ ngày đã chọn, thêm 7 và lấy phần còn lại từ 7. Điều này sẽ cung cấp cho bạn số ngày cần trừ để bắt đầu phạm vi của bạn.
Một logic tương tự được áp dụng để tính toán ngày kết thúc của phạm vi.
SELECT *
FROM transactions
WHERE DATE(transactionDate)
BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
ORDER BY transactionDate DESC;
Đối với một ngày bắt đầu khác, hãy thay thế ngày trong tuần cho 4
trong truy vấn.