Vous pouvez profiter de WEEKDAY()
qui renvoie un nombre représentant le jour de la semaine (0 =lundi, 6 =dimanche) et quelques calculs simples pour réécrire cette requête.
Soustrayez le jour de la semaine où vous voulez que la semaine commence (dans votre cas 4 =jeudi) de la date sélectionnée, ajoutez 7 et prenez le reste de 7. Cela vous donnera le nombre de jours à soustraire pour obtenir le début de votre plage.
Une logique similaire s'applique pour calculer la date de fin de la plage.
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;
Pour une date de début différente, remplacez le jour de la semaine par 4
dans la requête.