I am trying to calculate how old is a person in a database.
Let's suppose to have this simple table:
student(id, birth_date); Where id is the primary key (truly the table is more complex but I have simplified it).
I want to get how much old is a single person:
select id, datediff(curdate(),birth_date) from student But it returns a result in days, and not in years.I could divide it by 365:
select id, datediff(curdate(),birth_date) / 365 from student But it returns a floating point value, and I want an integer.
So I could calculate the years:
select id, year(curdate())-year(birth_date) from student But there is a problem: for instance now is May, if a person war born in June, 1970 he has still 31 years and not 32, but the expression returns 32.
I can't come out of this problem, can someone help me?
In MS SQL Server, the DATEDIFF function is used to get the difference between two dates in terms of years, months, days, hours, minutes etc. SELECT DATEDIFF(day, '2018-03-13', GETDATE()) AS "Difference in days"
Definition and UsageThe DATE_SUB() function subtracts a time/date interval from a date and then returns the date.
For anyone who comes across this:
another way this can be done is:
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE()) AS difference FROM student For differences in months, replace YEAR with MONTH, and for days replace YEAR with DAY
Hope that helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With