I want to get the difference in years from two different dates using MySQL database.
for example:
- 2011-07-20 – 2011-07-18 => 0 year
- 2011-07-20 – 2010-07-20 => 1 year
- 2011-06-15 – 2008-04-11 =>
23 years - 2011-06-11 – 2001-10-11 => 9 years
How about the SQL syntax? Is there any built in function from MySQL to produce the result?
Here’s the expression that also caters for leap years:
This works because the expression
(DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))istrueif date1 is “earlier in the year” than date2 and because in mysql,true = 1andfalse = 0, so the adjustment is simply a matter of subtracting the “truth” of the comparison.This gives the correct values for your test cases, except for test #3 – I think it should be “3” to be consistent with test #1:
Output:
See SQLFiddle