Estoy tratando de calcular qué edad tiene una persona en una base de datos.
Supongamos tener esta tabla simple:Obtenga la diferencia en años entre dos fechas en MySQL como un número entero
student(id, birth_date);
donde ID es la clave principal (realmente la mesa es más complejo, pero he simplificado ella).
quiero conseguir la cantidad de edad es una sola persona:
select id, datediff(curdate(),birth_date)
from student
pero devuelve un resultado en días, y no en years.I podría dividirlo por 365:
select id, datediff(curdate(),birth_date)/365
from student
Pero devuelve un valor de coma flotante, y quiero un entero.
Así que podría calcular los años:
select id, year(curdate())-year(birth_date)
from student
Pero hay un problema: por ejemplo, ahora es mayo, si una guerra persona nacida en junio de 1970 que tiene todavía 31 años y no 32, pero la expresión devuelve 32.
No puedo salir de este problema, ¿alguien puede ayudarme?
Esto no toma en cuenta los años bisiestos. La deriva puede ser significativa. 'seleccionar piso (datediff (" 2017-03-19 "," 1975-03-30 ")/365);' dice 42. Esa persona tiene 41, 11 días de descanso. – Schwern
Estoy de acuerdo con @Schwern – shrimpwagon