Ga naar inhoud
  • 0

Leeftijd berekenen bij overlljden


Flurk

Vraag

Beste

 

een vraagje; hoe kan je afgaande van een geboortedatum (= een veld) en een overlijdensdatum (= een veld) de leeftijd van iemand berekenen bij overlijden uitgedrukt in jaren?

vb. geboortedatum = 22/03/1956 en overlijdensdatum = 19/02/1959 moet 2 geven

vb. geboortedatum = 22/03/1956 en overlijdensdatum = 01/04/1959 moet 3 geven

 

Ik geraak er niet.

 

Groeten van

Eric

Link naar reactie

16 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Ha Menno,

 

Ik heb onze formules uitgetest. De mijne was in eerste instantie zonder testen opgeschreven.

 

Die formule van jou snap ik niet goed. Year () vraagt om een datum, maar jij geeft een getal op. Ik weet wel dat een datum eigenlijk ook een getal is, dus Year () interpreteert dat getal weer als datum, maar de uitkomst komt op mij als toeval over. Ook vind ik het cryptisch dat er ergens 1 wordt aftgetrokken en later weer ergens anders weer erbij opgeteld.

 

Maar goed, de uitslag van mijn test: Over het algemeen geven beide formules het juiste resultaat. Maar ik vond ook een fout.

 

Geboortedatum 02-02-2000 en sterfdatum 01-02-2002 gaat bij jou fout. En nog een paar.

Link naar reactie
  • 0

Je hebt gelijk, de mijne gaat ook niet goed, maar ik zit wel op de goede weg. Ik heb mijn formule aangepast en nu werkt ie volgens mij goed:

Let ( [ 
bDay = Day ( geboortedatum ) ; 
dDay = Day ( sterfdatum ) ; 
bMon = Month ( geboortedatum ) ; 
dMon = Month ( sterfdatum ) ; 
corr = if ( bMon > dMon or bDay > dDay and bMon = dMon ; 1 )
] ; 
Year ( ( Sterfdatum + 1 - corr ) - Geboortedatum ) - 1 
)

De +1 is om de verjaardag te compenseren. Die je dit niet dan verjaart iemand pas op de dag ná zijn verjaardag.

 

De correctie spreekt denk ik voor zich ... zolang de verjaardag nog niet is bereikt, is iemand niet verjaard. Dit is exact hetzelfde mechanisme als in de formule van vorige week waarin de geboortedatum (eigenlijk het geboortejaar) wordt berekend.

 

Het enige wat je nu nog moet doen is de kalenderdata van elkaar aftrekken en daarover het jaar te berekenen. De laatste -1 is nodig, omdat de jaartelling is begonnen in het jaar 0001 en leeftijd tellen wij vanaf 0

 

Ik heb diverse testjes gedaan, met schrikkeljaar, zonder, met meerdere, datum voor en datum na de verjaardag.

Link naar reactie
  • 0

Je kunt het ook veel transparanter oplossen door te vragen of de persoon in het sterfjaar al jarig was geweest:

Is (verjaardag in sterfjaar) <= sterfdatum?

 

If ( Date ( Month ( geboortedatum ); Day ( geboortedatum ); Year ( sterfdatum ) ) <= sterfdatum; 
Year ( sterfdatum ) - Year ( geboortedatum ); Year ( sterfdatum ) - Year ( geboortedatum ) - 1)

 

Zo ja dan is de leeftijd niets anders dan het verschil in jaren tussen geboorte- en sterfdatum. Anders is het 1 jaar minder.

Dit gaat altijd goed, ook bij overlijden op de geboortedag.

Link naar reactie
  • 0
Wat zou dit dan doen?

 

Ach, natuurlijk. Ik zag door de +1, -1 en corr de betekenis niet meer.

 

Wanneer je de jaren gaat vergelijken kun je toch ook gebruiken:

 Year ( Sterfdatum ) - Year ( Geboortedatum ) - corr 

 

Dan hebben we helemaal hetzelfde :)

 

@hbrendel, persoonlijk vind ik jouw formule lelijk omdat je hier met het gemiddelde aantal dagen per jaar rekent. Ik kan mij voorstellen dat dit in bepaalde gevallen fout gaat. Bv wanneer je geen schrikkeljaren hebt tussen geboorte en overlijden. Maar kort is hij zeker!

Link naar reactie
  • 0
persoonlijk vind ik jouw formule lelijk omdat je hier met het gemiddelde aantal dagen per jaar rekent. Ik kan mij voorstellen dat dit in bepaalde gevallen fout gaat. Bv wanneer je geen schrikkeljaren hebt tussen geboorte en overlijden. Maar kort is hij zeker!

Ik vind hem juist mooi. Kort, transparant, efficiënt. En waarmee zou je anders moeten rekenen dan met het gemiddelde?

Ik wens je veel succes met het vinden van een combinatie geboorte-/sterfdatum waarbij mijn formule niet het juiste resultaat geeft.

Link naar reactie
  • 0
Ik wens je veel succes met het vinden van een combinatie geboorte-/sterfdatum waarbij mijn formule niet het juiste resultaat geeft.

 

Onafhankelijk van schrikkeljaren is bij jou de leeftijd op de eerste verjaardag altijd fout.

Maar ook b.v. 27-8-1997/27-8-2003 geeft 5 en moet zijn 6

En zo kan ik hele lijsten maken :) (sorry)

Link naar reactie
  • 0

@Flurk, sommigen van ons zijn FileMaker- c.q. puzzel nerds. Die houden ervan om te zoeken naar die hele kleine foutjes in de beweringen van anderen, leggen zout op slakken en zoeken spijkers op laag water. Dus juist bedankt voor jouw vraag, daar hebben ook wij allemaal weer van geleerd.

 

@hbrendel, Ik vermoed dat het goed gaat zolang iemand de beleefdheid heeft om niet te sterven op zijn verjaardag. :twisted: Mijn ervaring is dat wanneer je met 365,25 dagen in een jaar rekent je makkelijk fout gaat op wat uitzonderlijke situaties. En dat is het hier natuurlijk ook; een uitzonderlijke situatie. In verreweg de meeste gevallen is jouw formule gewoon correct (en heel kort).

Link naar reactie
  • 0

Ik gebruik al vele jaren onderstaande berekening. Doet iets meer voorbereiding middels een maand-dag combinatiegetal waardoor berekening eenvoudiger is. Tevens ga ik helemaal door met boolean-rekenen.

Of je geboortedatum/overlijdensdatum, geboortedatum/huidige datum, begin/eind opleiding maakt natuurlijk geen verschil.

 

DatumDuurJaren ( startdate ; enddate ) =

Let ( [
 startyear = Year ( startdate ) ;
 startdatenum = Month ( startdate ) * 100 + Day ( startdate ) ; // was using DayofYear but failed around Feb. 28
 endyear = Year ( enddate ) ;
 enddatenum = Month ( enddate ) * 100 + Day ( enddate ) ] ; 

 endyear - startyear - ( startdatenum > enddatenum )

)

Kan iemand hier een gat schieten???

 

Mvg,

René

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...