Durchschnittsalter basierend auf Geburtsdaten errechnen

[access] Durchschnittsalter basierend auf Geburtsdaten errechnen

Ich habe eine Tabelle, in der mehrere User unter anderem auch Ihren Geburtstag als Datum speichern. Dieses ist kein Pflichtfeld, wird also nicht von jedem Benutzer ausgefüllt.

Wie errechne ich jetzt das Durchschnittsalter dieser Personen? Ein einfaches select avg(geburtstag) produziert kein sinnvolles Ergebnis.
 
Zuletzt bearbeitet:
Das Geburtsdatum gibt ja kein Alter an.

Du mußt AVG() also auf das (errechnete) Alter anwenden

Etwa
Select AVG( hier die Formel, mit der Du die Differenz zwischen sysdate und Geburtsdatum in Jahren ermitteltst) from ....

vop
 
Code:
SELECT 
ROUND(AVG(YEAR(
  DATE_SUB( NOW( ) ,
    INTERVAL( TO_DAYS( `geburtstag`) ) DAY ))))
AS `Durchschnittsalter` 
FROM user
Geburtstag als DATE, nicht eingetragene als NULL gespeichert
 
Vielen Dank für die bisherigen Antworten.

Hab leider noch keine funktionierende Lösung; bin aber gerade am rumprobieren.
DB ist übrigens Access.
 
Dann schau Dir mal die Funktion DATEDIFF an. Dazu noch die Funktion now() und schon sollte die Berechnung des Alters einer Person kein Problem mehr sein.
 
Danke Thomas, so funktioniert es erstmal schon zufriedenstellend..

Eine Frage aber noch: Bei den Benutzerprofilen lass ich das jeweilige Alter über folgende Funktion ausgeben:

Code:
vGeburtstag = CDate(RSuser("u_stats_birthdate"))
nDif = DateDiff("yyyy", vGeburtstag, Now())
If Month(vGeburtstag) > Month(Now) Then 
  nDif = nDif - 1
  ElseIf Month(vGeburtstag) = Month(Now) Then
   If Day(vGeburtstag) > Day(Now) Then nDif = nDif - 1
End If
response.write nDif

Das Alter wird sonst nicht immer korrekt angezeigt, da ohne diese Ausgabe nur die Jahres, aber nicht die Monats und Tagesdifferenz gezählt wird. Die Version von Dir gibt auch nur die Jahresdifferenz an, oder?
 
Zurück