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

Herausfinden, ob in MySql in n Tagen ein Jahrestag ansteht

Wie andere bereits gesagt haben, müssen Sie das Jahr in Ihrem Vergleich ignorieren. Die Funktion DAYOFYEAR() ist eine Möglichkeit, dies zu tun.

Hier ist eine schnelle Lösung aus dem Kopf. Es werden alle Geburtstage in den nächsten 10 Tagen zurückgegeben, auch wenn es Ende Dezember ist und der Geburtstag nächstes Jahr ist.

Schaltjahre werden NICHT richtig behandelt, daher wird es für Geburtstage Anfang März um 1 Tag verschoben, wenn dieses Jahr ein Schaltjahr ist und die Person nicht in einem Schaltjahr geboren wurde oder umgekehrt. Schaltjahre führen auch dazu, dass Geburtstage Anfang Januar manchmal Ende Dezember einen freien Tag haben. Wenn jemand die Schaltjahrkorrektur hinzufügen möchte, gerne :)

SELECT birthdate 
FROM Anniversaries 
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10 
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;