A.D.Tejpal
ad_tp at hotmail.com
Sun Aug 10 23:52:46 CDT 2003
Calculation of Age happens to be a universally gripping topic for programmers. Threads related to this issue keep emerging from time to time.
Devising a function capable of giving truly consistent results in terms of years, months and days lapsed between two dates remains a specially sought after objective. Many amongst programming community feel tempted to prepare custom functions towards this end. However, a consensus as to which particular function can be said to have met all tests for consistency, is probably yet to be established.
Interested members of this forum might like to give their suggestions regarding tests that the ideal function should be required to satisfy. An overall list incorporating these suggestions could help identify the most suitable function / functions.
It is also suggested that all relevant postings be done under a common thread "Re: [AccessD] Age calculation function" so as to avoid fragmentation.
Regards,
A.D.Tejpal
--------------
----- Original Message -----
From: Selina Iddon
To: Access Developers discussion and problem solving
Sent: Friday, August 08, 2003 17:32
Subject: Re: [AccessD] Calculate Age
Hi All
sorry to throw back to an old thread, but I couldn't remember if anyone actually came up with the final answer. If you're interested, I use the following code and (to date) haven't found it ever error. If you wanted to do it to the hour you'd just add the next datepart I suppose.
Anyway, here t'is, most of it is comments.
Function Age_Calc(birthdate As Date, dateto As Date) As Integer
On Error GoTo eror
'if a dateto didn't get sent, use today
Dim birthtime As Variant
Dim nowtime As Variant
Dim nowyear As Variant
'get a number for the date of the year, not using yeardate format because of leap years
birthtime = DatePart("m", birthdate) & Format(DatePart("d", birthdate), "00")
'we need to work out what day it is we want to enquire to
nowtime = CInt(DatePart("m", dateto) & Format(DatePart("d", dateto), "00"))
'let's just get the year difference
nowyear = DatePart("yyyy", dateto) - DatePart("yyyy", birthdate) 'eg 2003-1965
'takeaway where we are calculating to using the dateto
birthtime = nowtime - birthtime + 1 'should we count down for the age?
If birthtime > 0 Then 'they were born before the calc to date
Age_Calc = nowyear
Else
Age_Calc = nowyear - 1
End If
Exit Function
eror:
MsgBox Err.Number & " : " & Err.Description
End Function
To use it in a query, call the function from the query:
SELECT age_calc([tablename].[birthdate],Date()) AS age FROM tablename
HTH
Cheers
Selina
------------------------------------------------------------------------------
Selina Iddon
selina at easydatabases.com.au
Ph: 0414 225 265
Easy Access Databases
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://databaseadvisors.com/pipermail/accessd/attachments/20030811/cfdfcb57/attachment-0001.html>