Puoi sfruttare WEEKDAY()
che restituisce un numero che rappresenta il giorno della settimana (0 =lunedì, 6 =domenica) e alcuni semplici calcoli matematici per riscrivere questa query.
Sottrai il giorno della settimana in cui vuoi che inizi la settimana (nel tuo caso 4 =giovedì) dalla data selezionata, aggiungi 7 e prendi il resto da 7. Questo ti darà il numero di giorni da sottrarre per ottenere l'inizio del tuo intervallo.
Una logica simile si applica per calcolare la data di fine dell'intervallo.
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;
Per una data di inizio diversa, sostituisci il giorno della settimana con 4
nella query.