Sie können den WOCHENTAG()
die eine Zahl zurückgibt, die den Wochentag darstellt (0 =Montag, 6 =Sonntag) und etwas einfache Mathematik, um diese Abfrage neu zu schreiben.
Subtrahieren Sie den Wochentag, an dem die Woche beginnen soll (in Ihrem Fall 4 =Donnerstag), vom ausgewählten Datum, addieren Sie 7 und nehmen Sie den Rest von 7. Dadurch erhalten Sie die Anzahl der Tage, die Sie subtrahieren müssen, um den Beginn Ihres Bereichs zu erhalten.
Eine ähnliche Logik gilt für die Berechnung des Enddatums des Bereichs.
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;
Für ein anderes Startdatum ersetzen Sie 4
durch den Wochentag in der Abfrage.