Fecha Diferencia en MySQL para calcular la edad
Pregunta
Tengo un problema con respecto a la función datediff
MySQL, lo puedo usar y es simple. Pero no entiendo cómo usarlo para recoger las diferencias dentro del campo de la tabla. Por ejemplo.
Tengo un dob
columna y quiero escribir una consulta que va a hacer algo como
select dateDiff(current_timeStamp,dob)
from sometable 'here dob is the table column
Me quiere decir que quiera la diferencia de la fecha y hora actual en el campo de tabla dob
, cada resultado de la consulta es la diferencia, la edad del usuario.
Solución
¿Quieres decir así?
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable
( fuente )
Otros consejos
Usted puede hacer esto
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) AS
ageFROM your_table
Obras cada vez.
Si lo desea, para cada usuario, mostrar la edad en años, hacer
select name,extract(year from (from_days(dateDiff(current_timestamp,dob))))
from sometable;
Si entiendo sus comentarios en las respuestas anteriores, la columna de la fecha de nacimiento no es en realidad un valor DATE
sino una cadena en el formato m / d / a. I fuertemente recomendamos que cambie esto; se ralentiza ningún cálculo de fechas que desea hacer y corre el riesgo de los valores de fecha válidos siendo introducida en la columna.
creo que esto es lo que necesita. Utiliza la función STR_TO_DATE()
y un algoritmo para calcular la edad de la documentación de MySQL:
SELECT YEAR(CURDATE()) - YEAR(STR_TO_DATE(dob, '%m/%d/%Y'))
- (RIGHT(CURDATE(), 5) < RIGHT(STR_TO_DATE(dob, '%m/%d/%Y'), 5)) AS age
FROM sometable;
Creo que esto debería ayudar
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;
Nota: Dar la D.O.B en el formato correcto, por ejemplo YYYY-MM-DD'=> '1991-11-11
Probar
SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;