Hallo,
in meiner Umschulung habe ich vor kurzem mit MySql begonnen und nun geht es darum, die Tage bis zum nächsten Geburtstag zu berechnen. Ich kenne auch einige Lösungen, nur verstehe ich sie teilweise nicht. Hier soll es speziell um DATEDIFF gehen.
Also die Lösung, die wir bekommen haben ist:
select datediff(date(concat(year(now()), '-', month(Person.Geburtsdatum), '-', day(Person.Geburtsdatum))), now()) from Person;
Was ich bisher verstanden habe:
Bei datediff schreibt man die beiden Daten in die Klammer und das war´s soweit.
Das Problem hier: Das erste Datum ist ja zusammengesetzt aus dem aktuellen Jahr, dem Monat aus der Tabelle und ebenso dem Tag. Ich verstehe nicht warum man hier zusätzlich noch date und concat benötigt. Und warum diese '-' ?
Meine Lösungsansatz wäre gewesen:
select datediff((year(now()), month(person.geburtsdatum),day(person.geburtsdatum)), now()) from person;
Allerdings funktioniert das so leider nicht.
Vielleicht kann mir hier jemand einen Denkanstoß geben. Ich glaube ich habe (uA) die Syntax noch nicht richtig verstanden.
Vielen Dank an alle, die sich die Mühe machen zu antworten!
in meiner Umschulung habe ich vor kurzem mit MySql begonnen und nun geht es darum, die Tage bis zum nächsten Geburtstag zu berechnen. Ich kenne auch einige Lösungen, nur verstehe ich sie teilweise nicht. Hier soll es speziell um DATEDIFF gehen.
Also die Lösung, die wir bekommen haben ist:
select datediff(date(concat(year(now()), '-', month(Person.Geburtsdatum), '-', day(Person.Geburtsdatum))), now()) from Person;
Was ich bisher verstanden habe:
Bei datediff schreibt man die beiden Daten in die Klammer und das war´s soweit.
Das Problem hier: Das erste Datum ist ja zusammengesetzt aus dem aktuellen Jahr, dem Monat aus der Tabelle und ebenso dem Tag. Ich verstehe nicht warum man hier zusätzlich noch date und concat benötigt. Und warum diese '-' ?
Meine Lösungsansatz wäre gewesen:
select datediff((year(now()), month(person.geburtsdatum),day(person.geburtsdatum)), now()) from person;
Allerdings funktioniert das so leider nicht.
Vielleicht kann mir hier jemand einen Denkanstoß geben. Ich glaube ich habe (uA) die Syntax noch nicht richtig verstanden.
Vielen Dank an alle, die sich die Mühe machen zu antworten!