Jump to content
  • 0

Leeftijd berekenen bij overlljden


Flurk

Question

Posted

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

16 answers to this question

Recommended Posts

  • 0
Posted

Datums van elkaar aftrekken geeft het aantal dagen.

Dit aantal delen door 365,25.

Hiervan de integer nemen.

 

Uit het hoofd:

 

Int ( ( Sterfdatum - Geboortedatum ) / 365,25 )

 

Graag hoor ik of dit werkt.

  • 0
Posted

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.

  • 0
Posted

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.

  • 0
Posted

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.

  • 0
Posted
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!

  • 0
Posted
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.

  • 0
Posted
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)

  • 0
Posted

Iedereen bedankt voor de oplossing. Ik ben er tevreden mee.

 

Het was niet mijn bedoeling een polemiek te starten. ik zou het nooit gekund hebben zonder jullie hulp.

  • 0
Posted
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)

You got me!!

  • 0
Posted

@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).

  • 0
Posted

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é

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...