Supportnet / Forum / Datenbanken
Datumberechnung mit Access
Frage
Wie kann ich ein Abfragefeld in Access erstellen, das mir das aktuelle Alter einer Person liefert. Vorhanden ist ein
Feld "Geburtstag" in der Formatierung
tt.mm.jjjj. Ausgabe soll das aktelle Alter sein, nicht das im Laufe des Jahres erreichte Alter.
Gibt es eine Lösung
Antwort 1 von pelle
Hallo hfechner,
wie wäre es damit?:
Alter: Jahr(Jetzt())-Jahr([Geburtstag])
gruss
pelle
wie wäre es damit?:
Alter: Jahr(Jetzt())-Jahr([Geburtstag])
gruss
pelle
Antwort 2 von Marie
ja Pelle, dann hat er aber nur das Jahr, das er ja ausdrücklich nicht wollte.
Hm, müsstest halt zuerst vergleichen, wenn Monat datum heute > Monat Geburtsdatum, dann Jahr(Jetzt())-Jahr([Geburtstag])
else Jahr(Jetzt())-(Jahr([Geburtstag])+1)
und wenn Du ganz genau sein willst musst Du noch bei gleichem Monat entsprechend den Tag vergleichen :((
Wahrscheinlich geht es aber einfacher.
Gruß Marie
Hm, müsstest halt zuerst vergleichen, wenn Monat datum heute > Monat Geburtsdatum, dann Jahr(Jetzt())-Jahr([Geburtstag])
else Jahr(Jetzt())-(Jahr([Geburtstag])+1)
und wenn Du ganz genau sein willst musst Du noch bei gleichem Monat entsprechend den Tag vergleichen :((
Wahrscheinlich geht es aber einfacher.
Gruß Marie
Antwort 3 von oliver V
Hallo
versuchs mal mit:
=DatDiff("jjjj";[Geburtstag];Datum())
müsste klappen
Gruß
oliver
versuchs mal mit:
=DatDiff("jjjj";[Geburtstag];Datum())
müsste klappen
Gruß
oliver
Antwort 4 von hfechner
Geht leider nicht.
Die nach dem heutigen Tag Geburtstag haben sind alle 1 Jahr zu alt.
Wenn ich (Datum()-[gebtag])/365 nehme komme ich auf eine richtige Zahl mit vielen Nachkommastellen, kann aber nicht abrunden ( statt 52,629433 52)
Die nach dem heutigen Tag Geburtstag haben sind alle 1 Jahr zu alt.
Wenn ich (Datum()-[gebtag])/365 nehme komme ich auf eine richtige Zahl mit vielen Nachkommastellen, kann aber nicht abrunden ( statt 52,629433 52)
Antwort 5 von oliver V
Hallo hfechner,
habe hier die Lösung für dich:
=Wenn(DatSeriell(Jahr(Datum());Monat([Geburtstag]);Tag([Geburtstag]))>=Datum();(DatDiff("jjjj";[Geburtstag];Datum())-1);(DatDiff("jjjj";[Geburtstag];Datum())))
diesmal klappt es !
Gruß
oliver
habe hier die Lösung für dich:
=Wenn(DatSeriell(Jahr(Datum());Monat([Geburtstag]);Tag([Geburtstag]))>=Datum();(DatDiff("jjjj";[Geburtstag];Datum())-1);(DatDiff("jjjj";[Geburtstag];Datum())))
diesmal klappt es !
Gruß
oliver
Antwort 6 von hfechner
Hallo oliver,
Es funktioniert. Vielen Dank. Ich habe nur einen sehr umständlichen Weg mit mehreren Schritten und dann auch nicht tagesgenau gefunden.
Deine Lösung ist o. k.
Gruß
hfechner
Es funktioniert. Vielen Dank. Ich habe nur einen sehr umständlichen Weg mit mehreren Schritten und dann auch nicht tagesgenau gefunden.
Deine Lösung ist o. k.
Gruß
hfechner
Antwort 7 von PotzBlitz
Hallo hfechner,
vielleicht noch ein kleiner Nachtrag. Wenn (Datum()-[gebtag])/365 bis auf die überflüssigen Nachkommastellen funktioniert hatte, dann schneide sie doch einfach mit der Int()-Funktion (bzw. Fix()-Funktion) ab:
Int((Datum()-[gebtag])/365)
Oliver's Lösung erfüllt zwar im Endeffekt den gleichen Zweck, aber die Übersichtlichkeit sollte man als Argument nicht unterschätzen.
Gruss
PotzBlitz
vielleicht noch ein kleiner Nachtrag. Wenn (Datum()-[gebtag])/365 bis auf die überflüssigen Nachkommastellen funktioniert hatte, dann schneide sie doch einfach mit der Int()-Funktion (bzw. Fix()-Funktion) ab:
Int((Datum()-[gebtag])/365)
Oliver's Lösung erfüllt zwar im Endeffekt den gleichen Zweck, aber die Übersichtlichkeit sollte man als Argument nicht unterschätzen.
Gruss
PotzBlitz