Aus Datumfeld das Alter per sql-statement ermitteln

Kerstin_B

Mitglied
Hallo ihr lieben helfenden Geister von tutorials.de, ich habe folgende Frage zu meiner SQL-Abfrage:

SQL:
SELECT DATE FORMAT (FROM_DAYS (TO_DAYS (NOW ())-TO_DAYS (geburtsdatum)), '% Y') +0 AS Alter

Die Abfrage verursacht folgende Fehlermeldung:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(FROM_DAYS (TO_DAYS (NOW ())-TO_DAYS (geburtsdatum)), '% Y') +0 AS Alter' at line 1

Könnt ihr mir sagen, was ich falsch mache, ich würde gern anhand des Datums, welches sich im Datenbankfeld "geburtsdatum" der Tabelle "user" befindet, das Alter ausgegeben bekommen?

Gruß
Kerstin
 
Zuletzt bearbeitet von einem Moderator:
Woher kommt das geburtsdatum?
SQL weiss so nicht von welcher Tabelle das Ding kommen sollte. Da fehlt der ganze FROM-Teil des SQLs

Nachtrag: Das ganze Teil ist sowieso irgendwie ganz komisch. Beschrieb doch mal wie du das Alter haben willst. In Tagen, in Jahren, oder in Tagen Monaten und Jahren?
Seh ich das Richtig, das Feld geburtsdatum beinhaltet nur das Jahr?
 
Zuletzt bearbeitet:
Woher kommt das geburtsdatum?
SQL weiss so nicht von welcher Tabelel das Ding kommen sollte. Da fehlt der ganze FROM-Teil des SQLs

Hallo yaslaw,
das geburtsdatum kommt aus Tabelle "user"

Sollte es so aussehen?:

SQL:
SELECT DATE FORMAT (FROM_DAYS (TO_DAYS (NOW ())-TO_DAYS (geburtsdatum)), '% Y') +0 FROM user AS Alter

Gruß
Kerstin
 
Zuletzt bearbeitet von einem Moderator:
Also ich nehme es mit dem Alter jetzt mal nicht so genau, deshalb folgender Lösungsvorschlag:

SQL:
SELECT (YEAR(CURRENT_DATE) - YEAR(geburtsdatum)) AS jahre FROM user

Das Wort "ALTER" mag mySQL nicht als Bezeichner, deshalb nenne ich es "jahre" !

Hallo Thomas du Spaßvogel, :)

Dein Staement verursacht folgenden Fehler:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER FROM user LIMIT 0, 30' at line 1

Liebe Grüße
Kerstin

EDIT:
Mit "jahre" anstelle "ALTER" funktionierts,danke dir :)
 
Zuletzt bearbeitet:
Nachtrag: Das ganze Teil ist sowieso irgendwie ganz komisch. Beschrieb doch mal wie du das Alter haben willst. In Tagen, in Jahren, oder in Tagen Monaten und Jahren?
Seh ich das Richtig, das Feld geburtsdatum beinhaltet nur das Jahr?

Wenns nur nach Jahrgang geht dann stimmt tombes Formel. Das bedeutet aber auch, dass derjenige der am 31 Dezember geburtstag hat bereits am 1 Januar sein Alter hat.
Geburtstag: 31.12.1980
Heute: 29.09.2010
Alter nach Tombes rechnung: 30 jahre
Alter nach normaler Rechnung: 29 jahre

Nachtrag: ALTER ist ein SQL-Befehl und darum ganz ungeeignet als Feldname
 
@yaslaw: Habe ja geschrieben das ich es in der Formel bzw. dem Alter nicht so genau nehme. Ein bisschen wollte ich Kerstin halt auch noch fordern!
 
Naja, wenn man bei MySQL weiss wie das Zeug heissen könnte, wird man fündig. Ansonsten ists eher happig.

Aber für die genaue jahresdifferenz gibts j zum Glück den befehl TIMESTAMPDIFF
SQL:
SELECT TIMESTAMPDIFF(YEAR, geburtsdatum, NOW()) AS alter_jahr FROM user
 
Zuletzt bearbeitet von einem Moderator:
Wenns nur nach Jahrgang geht dann stimmt tombes Formel. Das bedeutet aber auch, dass derjenige der am 31 Dezember geburtstag hat bereits am 1 Januar sein Alter hat.
Geburtstag: 31.12.1980
Heute: 29.09.2010
Alter nach Tombes rechnung: 30 jahre
Alter nach normaler Rechnung: 29 jahre

Nachtrag: ALTER ist ein SQL-Befehl und darum ganz ungeeignet als Feldname

Hallo yaslaw,

ich möchte das Alter in Jahren ausgegeben bekommen und das am Besten mit dem Namen der in der Tabelle "user" im Datenfeld "benutzer" steht. Du hast übrigens Recht, in "geburtsdatum befindet sich ausschließlich das Datum in folgendem Format "1960-10-12"

Gruß
Kerstin
 
Zurück