Możesz skorzystać z WEEKDAY()
która zwraca liczbę reprezentującą dzień tygodnia (0 =poniedziałek, 6 =niedziela) i kilka prostych obliczeń matematycznych do przepisania tego zapytania.
Odejmij dzień tygodnia, w którym chcesz rozpocząć tydzień (w twoim przypadku 4 =czwartek) od wybranej daty, dodaj 7 i weź resztę z 7. To da ci liczbę dni do odjęcia, aby uzyskać początek zakresu.
Podobna logika dotyczy obliczania daty zakończenia zakresu.
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;
Aby uzyskać inną datę początkową, zamień dzień tygodnia na 4
w zapytaniu.