U kunt profiteren van WEEKDAY()
die een getal retourneert dat de dag van de week vertegenwoordigt (0 =maandag, 6 =zondag) en wat eenvoudige wiskunde om deze query te herschrijven.
Trek de weekdag waarop u de week wilt laten beginnen (in uw geval 4 =donderdag) af van de geselecteerde datum, tel 7 op en neem de rest van 7. Dit geeft u het aantal dagen dat u moet aftrekken om het begin van uw bereik te krijgen.
Een vergelijkbare logica is van toepassing om de einddatum van het bereik te berekenen.
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;
Voor een andere startdatum vervangt u 4
. door de weekdag in de zoekopdracht.