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.

¿Fue útil?

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()) ASageFROM 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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top