how to calculate someones age

D

Dave Smith

hi again,
i have a clients details form which i want to enter their
birthdate into, i want the form to calculate their age & possibly save that
age to the clients details table (i want to run a report based on age later)
at the moment i have a bound text box to enter birthdate into & a bound text
box for the age.

thanking you in advance

Dave Smith
 
A

Alex White MCDBA MCSE

You need to use datediff

? datediff("yyyy",#05/05/1968#,now)

= 37 (at the moment)

I would suggest not saving the age in the database, because it can be
calculated at any point in time and it will become incorrect by next year
sometime, also the above is just subtracting one year from the next, for a
more accurate you might have to calculate on days

? datediff("d",#20/05/1968#,now)

and then work out years with 365 days and years with 366 days something like

1461 days every 4 years.
 
D

Douglas J Steele

Both calculations shown can be inaccurate. As an extreme example, on January
1st, the first approach would show that a baby born the previous day is 1
year old.

The "trick" is to determine whether the birthday has already taken place
that year or not, and adjust accordingly.

= DateDiff("yyyy", [DOB], Date()) - IIf(Format(Date(), "mmdd") <
Format([DOB], "mmdd"), 1, 0)

Age should DEFINITELY not be stored in the table: create a query that uses
the formula above, and use the query wherever you would otherwise have used
the table.
 
A

Alex White MCDBA MCSE

That i'll do it.....

--
Regards

Alex White MCDBA MCSE
http://www.intralan.co.uk

Douglas J Steele said:
Both calculations shown can be inaccurate. As an extreme example, on
January
1st, the first approach would show that a baby born the previous day is 1
year old.

The "trick" is to determine whether the birthday has already taken place
that year or not, and adjust accordingly.

= DateDiff("yyyy", [DOB], Date()) - IIf(Format(Date(), "mmdd") <
Format([DOB], "mmdd"), 1, 0)

Age should DEFINITELY not be stored in the table: create a query that uses
the formula above, and use the query wherever you would otherwise have
used
the table.

--
Doug Steele, Microsoft Access MVP

(no e-mails, please!)


Alex White MCDBA MCSE said:
You need to use datediff

? datediff("yyyy",#05/05/1968#,now)

= 37 (at the moment)

I would suggest not saving the age in the database, because it can be
calculated at any point in time and it will become incorrect by next year
sometime, also the above is just subtracting one year from the next, for
a
more accurate you might have to calculate on days

? datediff("d",#20/05/1968#,now)

and then work out years with 365 days and years with 366 days something like

1461 days every 4 years.

--
Regards

Alex White MCDBA MCSE
http://www.intralan.co.uk
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top