Sarah: Alter und Geburtsdatum

Hallöle,
wie kann ich eigentlich von der DB (mySQL) von der Spalte Geburtstag im Format (date=1950-12-31) das Alter in Jahren auslesen?

Habe leider nirgends etwas gefunden?

Wir würde das Select aussehen??

Oder sollte ich eine Spalte "Alter" anlegen und jeden Abend per crontab das Alter berechnen mit:
(YEAR(CURDATE())-YEAR(Geburtstag)) - (RIGHT(CURDATE(),5)<RIGHT(Geburtstag,5))

Was wäre von der Perfomance her besser?

Grüßchen

  1. Moin Moin!

    Berechne das Alter während der Abfrage.

    SELECT now()-geburtstag as alter from tabelle

    oder ähnliches, das ist je nach DB etwas unterschiedlich. Das Handbuch zur DB sollte da weiterhelfen.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Also während der Abfrage wäre die Berechnung besser.

      Wenn man das Geburtsdatum von now() einfach abziehen kann, wäre das sehr easy. Ich probiere es mal aus.

      Grüßchen

      1. Wenn man das Geburtsdatum von now() einfach abziehen kann, wäre das sehr easy. Ich probiere es mal aus.

        Leider nicht geklappt :(

        1. Moin!

          Wenn man das Geburtsdatum von now() einfach abziehen kann, wäre das sehr easy. Ich probiere es mal aus.

          Leider nicht geklappt :(

          Benutze die Datumsrechenfunktionen. MySQL hat da ein reichhaltiges Angebot, auch zum Subtrahieren ist was dabei.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
        2. Hallo!

          Wenn man das Geburtsdatum von now() einfach abziehen kann, wäre das sehr easy. Ich probiere es mal aus.

          Leider nicht geklappt :(

          Nicht geklappt ist welche Fehlermeldung?
          Ein Now()-DATESPALTE müsste eigentlich funktionieren. Ist Geburtstag auch als  Datumsformat definiert?
          Ansonsten hat Sven eh schon auf die Date and Time Functions von MySQL hingewiesen.

          mfg
            frafu

          1. Danke Sven und Danke FraFu,

            Nicht geklappt ist welche Fehlermeldung?
            Ein Now()-DATESPALTE müsste eigentlich funktionieren. Ist Geburtstag auch als  Datumsformat definiert?
            Ansonsten hat Sven eh schon auf die Date and Time Functions von MySQL hingewiesen.

            Habe now()-Geburtsdatum gemacht und erhalte solch ein Wert zurück:
            20080187333156

            Habe versucht dann zu formatieren mit:
            date_format(now()-Geburtsdatum,"%Y"). Kriege aber NULL zurück.

            Grüßchen

            1. Sorry, ich könnte ja das vom Cronjob nehmen:

              select(YEAR(CURDATE())-YEAR(Geburtsdatum)) - (RIGHT(CURDATE(),5)<RIGHT(Geburtsdatum,5)) AS age, name, id from ....

              Grüße

  2. Hallo Sarah,

    wie kann ich eigentlich von der DB (mySQL) von der Spalte Geburtstag im Format (date=1950-12-31) das Alter in Jahren auslesen?

    Die einfachste Form wäre sowas: »YEAR(NOW())-YEAR(geburtsdatum)«, die genauere Variante findest du unter http://www.to-kl.de/scripte/mysql-schnipsel.html.

    Grüße aus Nürnberg
    Tobias

    --