Метод, который допускает большую точность, просто использует преимущества существующих функций даты / времени MySQL.Если вы работаете внутри MySQL, вы можете с большой точностью вычислить возраст, преобразовав каждую из двух дат в секунды в преобразовании TO_SECONDS (), а затем манипулируя результатами с желаемой точностью.В этих случаях даты имеют формат «гггг-мм-дд чч: мм: сс», и предполагается, что год имеет среднюю длину 365,242 дня.
ROUND ((TO_SECONDS (AnyDateTime) - TO_SECONDS (DateOfBirth)) / (365.242 * 60 * 60 * 24), 3) как возраст, например:
ROUND((TOSECONDS('2013-01-01 00:00:00') - TO_SECONDS('1942-10-16')/(365.242*60*60*24),3) as AGE --> 70.214
В качестве альтернативы вы можете использовать преобразование DATEDIFF (), которое дает ответ в днях:
ROUND(DATEDIFF('2013-01-01 00:00:00','1942-10-16')/365.242,3) AS age --> 70.214