[AccessD] Age calculation function

Wortz, Charles CWortz at tea.state.tx.us
Thu Jul 31 15:05:53 CDT 2003


Mark,

DateDiff() doesn't round up.  The problem is it counts the number of
time intervals crossed between the two dates.  If you use "yyyy" as the
time interval, then it counts 30 time intervals (1974, 1975, ..., 2003)
between #1973/08/01# and #2003/07/31#.  If you use months and divide by
12 you should get the correct answer.  The trick to DateDiff is to use
the next smaller time interval and then adjust the answer to the time
interval you want.

Charles Wortz
Software Development Division
Texas Education Agency
1701 N. Congress Ave
Austin, TX 78701-1494
512-463-9493
CWortz at tea.state.tx.us



-----Original Message-----
From: Mark Whittinghill [mailto:mwhittinghill at symphonyinfo.com] 
Sent: Thursday 2003 Jul 31 14:52
To: accessd at databaseadvisors.com
Subject: [AccessD] Age calculation function

Hi all,

  I need an age calculation function to calculate current age from
birthday. If the person's 30th birthday is on August 1, I want them to
be 29 on July31st.  DateDiff rounds up and makes them 30.  I made this
function

Public Function CalculateAge(datBirth As Date) As Long

    Dim lngNumDays As Long
    lngNumDays = DateDiff("d", datBirth, Date)

    CalculateAge = Int(lngNumDays / 365.25)

End Function


It works, except when today's date is their birthday.  In my example, on
their birthday, the function returns 29.  The next day it works.  It
works for some years on the birthday and not others.  How can I make
this foolproof?

Mark Whittinghill
Symphony Information Services
612-333-1311
mwhittinghill at symphonyinfo.com


More information about the AccessD mailing list