Calculate Age

  • Maysarah

    Right there with Babe

    Points: 763

    Comments posted to this topic are about the item Calculate Age

  • Robert Seliga

    SSC Journeyman

    Points: 92

    why not just datediff() the number of days between the parameter and getdate() - then divide that number by 365.25?

  • prvangala

    Newbie

    Points: 5

    Dividing the datediff in days by 365.25 doesn't always work (consistently). Sometimes you have to delete the fraction part (floor) and sometimes you have to round up to the next integer (ceiling) to get the correct age. Here are two examples (assume the first date as DOB, and the second as the day the age is calculated on):

    select datediff(day, '10/23/2006', '5/23/2008')/365.25, datediff(day, '5/23/1899', '5/23/2008')/365.25

    returns

    1.582477 108.999315

    To get the right age in integer value, we have to floor the first value(1.582477), and ceiling the second value (108.999315).

    Given that, I'd alter the original function by adding the second date as a parameter as well. Then you can pass getdate() or any other date as the second param.

    -Prabhakar

  • Mark Ingalls

    Grasshopper

    Points: 14

    How 'bout this?

    declare @dob as datetime

    select @dob = '6/21/1968'

    declare @now as datetime

    declare @year_diff as tinyint

    select @now = getdate()

    select @year_diff = datediff(year, @dob, @now)

    if DateAdd(year, @year_diff, @dob) > @now

    select @year_diff -1

    else

    select @year_diff

    basically, calculate the number of years that have gone by, then add those years back to the date of birth. if the resulting date is in the future, we subtract one from the years as it would indicate that we have not yet reached the birthday in the current year. if the resulting date is in the past, we have already reached the birthday in this year, so we can return the number of years unaltered.

    thanks,

    mark

  • Dmitriy Burtsev

    Ten Centuries

    Points: 1185

    Thank you for idea

    create function dbo.Calc_Age (@dob datetime) -- date of birth

    returns int

    as

    begin

    return ( select datediff (year, @dob,v_date) -

    case

    when (month(@dob) = month(v_date) and day(@dob) > day(v_date)) then 1

    when month(@dob) > month(v_date) then 1

    else 0

    end

    from dbo.v_getdate )

    end

  • Maysarah

    Right there with Babe

    Points: 763

    Mark, your Idea is very nice 🙂

  • wasekm2001

    Grasshopper

    Points: 11

    Hello, Mark Ingalls,

    This is Wasek, I am just a beginer in this business, but I am eager to get the solution of calculating a person's age and date difference from one date to another for my project. Could you pl make a sample project with those in VB 2008, Zip it and send it across to my e-mail address below I willbe pleased.

    wasekm2001@yahoo.com

    One more thing, if you know. Which I could not do. That, how can I change the page setup of a print form component. Meaning to say that its paper size and the margins are auto set. How can I set it my self of my desire. If you know give me easy solution. Again I need a sample project of yours in VB 2008, considering my capability as a learner. Thanks a lot.

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic. Login to reply