Archive for July 9th, 2009
Selecting birthdays
Comments enabled. I *really* need your comment
Answering questions asked on the site.
James asks:
I'm developing a forum and want to select all users that have a birthday within the next 3 days.
How do I do it?
This is in SQL Server
This is a very nice feature which every decent forum should have, and I'll be glad to answer this question.
Unfortunately you didn't provide the names of your tables, so I'll have to make them up.
It's not much of a stretch to assume that your table is called t_user
and you keep the user's birthdates in a DATETIME
field called birthdate
.
A birthday within next 3 days means that if you add the person's age to the person's birthdate, you get a date between the current date and three days after it.
To check this, we just need to calculate the number of months between the dates and make sure that it's divisible by 12 with reminder of 0 or 11 (to handle month transitions).
Then we need to add a transition month and divide the number of months by 12. The quotient will give us the number of years we need to add to the birthdate to compare the result with GETDATE()
.
Let's create a sample table and see how to do it:
Read the rest of this entry »