sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel åruge i den aktuelle uge for at starte på en torsdag, slutte på onsdag

Du kan drage fordel af WEEKDAY() som returnerer et tal, der repræsenterer ugedagen (0 =mandag, 6 =søndag) og noget ligetil matematik for at omskrive denne forespørgsel.

Træk den ugedag, du ønsker, ugen skal starte på (i dit tilfælde 4 =torsdag) fra den valgte dato, tilføj 7 og tag resten fra 7. Dette vil give dig det antal dage, du skal trække fra for at få starten på dit interval.

En lignende logik gælder for at beregne slutdatoen for området.

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;

For en anden startdato skal du erstatte ugedagen med 4 i forespørgslen.



  1. Sådan finder du ud af størrelsen på indekser i MySQL

  2. hvordan kan jeg få en række nyligt indsatte poster-id'er?

  3. hvordan man kontrollerer, om mysql-forespørgsel ikke returnerer noget resultat (record ikke fundet) ved hjælp af php?

  4. Sådan fejler eller crasher dine MySQL-instanser til test