Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage yearweek der aktuellen Woche, um an einem Donnerstag zu beginnen und am Mittwoch zu enden

Sie können den WOCHENTAG() die eine Zahl zurückgibt, die den Wochentag darstellt (0 =Montag, 6 =Sonntag) und etwas einfache Mathematik, um diese Abfrage neu zu schreiben.

Subtrahieren Sie den Wochentag, an dem die Woche beginnen soll (in Ihrem Fall 4 =Donnerstag), vom ausgewählten Datum, addieren Sie 7 und nehmen Sie den Rest von 7. Dadurch erhalten Sie die Anzahl der Tage, die Sie subtrahieren müssen, um den Beginn Ihres Bereichs zu erhalten.

Eine ähnliche Logik gilt für die Berechnung des Enddatums des Bereichs.

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 ein anderes Startdatum ersetzen Sie 4 durch den Wochentag in der Abfrage.