sql >> Database >  >> RDS >> Mysql

MySQL-zoekopdracht jaarweek van de huidige week om te beginnen op een donderdag, te eindigen op woensdag

U kunt profiteren van WEEKDAY() die een getal retourneert dat de dag van de week vertegenwoordigt (0 =maandag, 6 =zondag) en wat eenvoudige wiskunde om deze query te herschrijven.

Trek de weekdag waarop u de week wilt laten beginnen (in uw geval 4 =donderdag) af van de geselecteerde datum, tel 7 op en neem de rest van 7. Dit geeft u het aantal dagen dat u moet aftrekken om het begin van uw bereik te krijgen.

Een vergelijkbare logica is van toepassing om de einddatum van het bereik te berekenen.

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;

Voor een andere startdatum vervangt u 4 . door de weekdag in de zoekopdracht.



  1. Reset cursorpositie in PDO

  2. MySQL migreren naar PostgreSQL op AWS RDS, deel 4

  3. MySql krijgt de telling van elk type element in een cloumn

  4. Waarom commit SQL*Plus bij afsluiten?