Hier ist eine vereinfachte Version, die nur Datumsberechnungen verwendet:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
Je nachdem wie NOW()
ausgewertet wird (ein- oder zweimal pro Anweisung), möchten Sie dies vielleicht trotzdem in eine Funktion packen und das Ergebnis von NOW()
speichern in eine Variable und verwenden Sie dann die Variable für LAST_DAY(var)
aufrufen, um eine Racebedingung zu vermeiden, bei der der Monat zwischen Aufrufen von NOW()
übergeht .