• Status: Solved
• Priority: Medium
• Security: Public
• Views: 597

# The best age computation formula

Hi Experts,

I'm working on a report that computes patient's age.
With Crystal 8, this is not a problem because of the Datediff function but with crystal 7, I need to manipulate date fields to get the patient age.

Can anybody show me the best formula to compute the patient's age in CR7?

TIA,

zero
0
zerobro
• 4
• 3
1 Solution

Commented:
Can't you simply subtract the date of birth from today's date ("Date") and divide the result by 365.25?

J.
0

Author Commented:
Hi jsweby,

I have that before but there's a little bit of a problem:

with a patient whose birthdate is 1/3/82, using the formula you propose ((CurrentDate - {PATIENT.BIRTHDATE}) / 365.25) will generate an age of 19.52. This is correct but the thing is, I wanted to round this up. When I do so, it will become 20 which in anyway the wrong age.

When using CR8's DIFFDATE function in the formula:

DateDiff ("YYYY", {PATIENT.BIRTHDATE}, CurrentDate)

The result is 19 which is the right one I need.

Although I have CR8, due to a very valid reason, I need to use CR7 for this report.

That's basically my problem,

zero
0

Author Commented:
Hi jsweby,

I have that before but there's a little bit of a problem:

with a patient whose birthdate is 1/3/82, using the formula you propose ((CurrentDate - {PATIENT.BIRTHDATE}) / 365.25) will generate an age of 19.52. This is correct but the thing is, I wanted to round this up. When I do so, it will become 20 which in anyway the wrong age.

When using CR8's DIFFDATE function in the formula:

DateDiff ("YYYY", {PATIENT.BIRTHDATE}, CurrentDate)

The result is 19 which is the right one I need.

Although I have CR8, due to a very valid reason, I need to use CR7 for this report.

That's basically my problem,

zero
0

Commented:
Don't round the age, truncate it so that you always get the whole number, never rounded. The Truncate function will do this for you.

J.
0

Author Commented:
what do you mean truncate?? convert this to a text and parse the needed portion?

please show me how to do this by example.

zero
0

Commented:
No, truncate is a mathmatical function that takes a decimal number and returns the number rounded down to the nearest integer, so that 19.52 becomes 19, 19.99 also becomes 19:

Age := Truncate((CurrentDate - {PATIENT.BIRTHDATE}) / 365.25)

J.
0

Author Commented:
Ok, I got it...thanks for the time...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.