This is my MySQL Query to return the age from the date of birth
SELECT PensionerDOB, YEAR( CURDATE() ) AS Year, DATE_FORMAT( STR_TO_DATE( PensionerDOB, '%d-%M-%Y' ), '%Y') AS age, YEAR( CURDATE() ) - DATE_FORMAT( STR_TO_DATE(`PensionerDOB`, '%d-%M-%Y' ), '%Y' ) AS differenage FROM `pensionerbasicdata`
The query is executed. But it returns the age difference is in a negative value.
Advertisement
Answer
SELECT *, TIMESTAMPDIFF(year, STR_TO_DATE(CONCAT(SUBSTRING_INDEX(PensionerDOB, '-', 2), '-19', SUBSTRING_INDEX(PensionerDOB, '-', -1)), '%d-%M-%Y'), CURRENT_DATE) AS age FROM pensionerbasicdata
The problem with 2-digit year fixed – all years are treated as 19xx
.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f356258c99b20d13b0c4e2349b801f18