Store Users’ Birth Dates, Not Ages, in the Database

If you store your users' ages in the database, in one year's time their ages will be wrong. If you store your users' birth dates in the database, and calculate their age from that, this age will always be correct.

Some sites wish to ask the user their age and display it. It would seem simplest to just store this number in an integer field alongside the user in the database. But you can be sure that, in one year, this value will be wrong.

Instead you should ask the user their birth date. Store that in the database. Always calculate their age by seeing how many years have passed between their stored birth date and the current date. As they get older, their age will always be displayed correctly.

In case you really wish to ask the user their age only, one trick we did at uboot, was to calculate an approximate birth date. Assuming they're half way between their birthdays, and they say they are n years old, assume their birth date was n+½ years ago (or 12n+6 months ago). Calculate the age to display as described above. On the day they enter their age, the display will be correct. One year thence it'll be correct as well. In between it'll be, well, an approximation. But better than displaying their entered age forever—showing them never ageing.

This article is © Adrian Smith.
It was originally published on 2 Jan 2013
More on: Software Architecture | | Databases