mysql Lebensalter berechnen lassen ?

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,
ich habe in einer Tabelle adressen die Spalte Adr_Alter, in diese Spalte möchte ich jetzt das alter der personen speichern.

Leider klappt meine Syntax nicht so ganz:
UPDATE adressen SET Adr_Alter = CURDATE()-Adr_GebDatum;
Dies ist leider nicht korrekt
Könnt ihr mir helfen
Danke gruss frank
 
erledigt Antwort selbst gefunden:
mysql> UPDATE adressen SET Adr_Alter = YEAR( DATE_SUB( NOW( ) , INTERVAL( TO_DAYS( Adr_GebDatum ) ) DAY ) ) ;
 
Ein kleiner Tipp:
Das Alter beim Select berechnen und die Altersspalte weglassen, dann musst Du nicht jedes Jahr ein Update schieben. (Normalisierung, 3. NF)
Code:
SELECT 
YEAR( DATE_SUB( NOW( ) , INTERVAL( TO_DAYS( Adr_GebDatum ) ) DAY ) ) 
AS Alter 
FROM adressen
(Habe mal einfach Deine Funktion genommen)
 
Ein kleiner Tipp:
Das Alter beim Select berechnen und die Altersspalte weglassen, dann musst Du nicht jedes Jahr ein Update schieben. (Normalisierung, 3. NF)
Code:
SELECT 
YEAR( DATE_SUB( NOW( ) , INTERVAL( TO_DAYS( Adr_GebDatum ) ) DAY ) ) 
AS Alter 
FROM adressen
(Habe mal einfach Deine Funktion genommen)


So, ich krame das hier mal aus. Stehe gerade vor dem selben Problem. Eigentlich funktioniert dass so ja ganz gut. Allerdings habe ich gerade mal ein wenig getestet und gestgestellt, dass wenn jetzt zum Beispiel als Geburtsdatum der 23.11.1981 angegeben ist, als Ergebnis 24 geliefert wird. Wenn ich als Geburtsdatum den 22.11.1981 angebe, bekomme ich 25 als Ergebnis. Nun hätte ich es aber gerne so, dass schon am Geburtstag das neue Alter angezeigt wird. Wenn man am 23.11.1983 geboren ist, soll also am 23.11.2006 als Alter 25 geliefert werden.

Habe jetzt gerade mal die Doku gelesen weil ich dachte ich komme selbst dahinter, aber ehrlich gesagt verstehe ich nichtmal die von hpvw genannte Abfrage. Wäre sehr nett wenn mir das jemand erklären könnte und zur Lösung führt.

Danke.

Edit: Achso, das alter steht in der Form 0000-00-00 in einer DATE Spalte.
 
Zuletzt bearbeitet:
Zurück