Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL yearweek de la semaine en cours pour commencer un jeudi et se terminer un mercredi

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.