Moin
5.) Und meine letzte Frage: Auch wenn meine Lösung funktioniert, würde ich trotzdem gerne den […]AS
days\_to\_birthday
Block der zuerst gefundenen Lösung verstehen. Kann mir das vielleicht wer ausdeutschen, was in diesem Teil der Query geschieht? Unter anderem verstehe ich die Stelle mit dem „ , 1, 0))“ nicht.
DATEDIFF(`geburtstag` + INTERVAL
(YEAR(CURRENT_DATE) - YEAR(`geburtstag`) +
IF(DATE_FORMAT(CURRENT_DATE, "%m%d") >
DATE_FORMAT(`geburtstag`, "%m%d"), 1, 0))
YEAR, CURRENT_DATE) AS `days_to_birthday`
Diese Funktion muss man von innen nach außen lesen (wie jede Funktion)
nehmen wir zuerst
DATE_FORMAT(CURRENT_DATE, "%m%d")
diese Funktion gibt ein Datumsfeld formatiert zurück (hier als %m%d (Monat im Format 00-12 und Tag des Monats als 00-31)
Es geht weiter
IF(DATE_FORMAT(CURRENT_DATE, "%m%d") >
DATE_FORMAT(`geburtstag`, "%m%d"), 1, 0)
es wird hier das aktuelle ebenso formatierte aAtum mit dem ausgelesenen formatierten verglichen. Wenn das aktuelle Datum größer als das ausgelesene (nur von Monat und Tag her), dann soll eine 1 zurückgegeben werden ansonsten eine 0
Und weiter im Text:
`geburtstag` +INTERVAL
(YEAR(CURRENT_DATE) - YEAR(`geburtstag`) +
IF(DATE_FORMAT(CURRENT_DATE, "%m%d") >
DATE_FORMAT(`geburtstag`, "%m%d"), 1, 0)) YEAR
hier ersetze ich mal mit 1 oder o des vorherigen Blocks ** 1|0 **
`geburtstag` + INTERVAL (YEAR(CURRENT_DATE) - YEAR(`geburtstag`) + ** 0|1** ) YEAR
Hier der nächste Geburtstag des Users endweder auf dieses Jahr (Wennn er noch folgt) oder aufs nächste Jahr (wenn im aktuellen Jahr bereits vorbei) gesetzt.
Und als letztes noch die Datediff-Funktion
DATEDIFF(`geburtstag` + INTERVAL
(YEAR(CURRENT_DATE) - YEAR(`geburtstag`) +
IF(DATE_FORMAT(CURRENT_DATE, "%m%d") >
DATE_FORMAT(`geburtstag`, "%m%d"), 1, 0))
YEAR, CURRENT_DATE)
hier wird die Differenz an Tagen zwischen dem errechneten nächsten Geburtstag und dem aktuellen Datum berechnet "DATEDIFF ( errechneter nächster geburtstag , aktuelles Datum)".
Und so erhält man eine Anzahl an Tagen zum nächsten Geburtstag als days\_to\_birthday
.
Gruß Bobby
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)