sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga årvecka för den aktuella veckan för att börja på en torsdag, sluta på onsdag

Du kan dra nytta av WEEKDAY() som returnerar ett tal som representerar veckodagen (0 =måndag, 6 =söndag) och lite enkel matematik för att skriva om den här frågan.

Subtrahera den veckodag du vill att veckan ska börja på (i ditt fall 4 =torsdag) från det valda datumet, lägg till 7 och ta resten från 7. Detta ger dig antalet dagar att subtrahera för att få början av ditt intervall.

En liknande logik gäller för att beräkna slutdatumet för intervallet.

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;

För ett annat startdatum, ersätt veckodagen med 4 i frågan.



  1. Visual Studio:ContextSwitchDeadlock

  2. Ändra MySQL-tabell på olika sidor med poäng från ett HTML-formulär

  3. Kontrollera vilka användare som är online

  4. jqGrid - Unikt ID för ny rad