A que servidores de hosting tan anticuados… esta vez me sacaron canas verdes… bueno lo que pasa es que investigando un poquito sobre MySQL, en un proyecto actual a mis clientes les interesa saber la edad de sus usuarios y bueno ps me pidieron hacer un formulario de registro o como buen programador quise evitar la fatiga de los usuarios ya que querían que se les pidiera fecha de nacimiento y edad, vamos con la fecha de nacimientos puedo obtener la edad eso fue lo que yo dije, bueno decidí no pedir la edad y calcularla atreves de MySQL ya que había visto una función llamada TIMESTAMPDIFF la cual es sencillísima de usar ejemplo:
SELECT TIMESTAMPDIFF(YEAR,'1984-03-06','2008-11-05');
Lo que me muestra como resultado “24” que es la edad o los años de diferencia entre la primera y la senda fecha, también puedo hacer esto:
SELECT TIMESTAMPDIFF(YEAR,'1984-03-06',NOW());
Para ver cuantos años son hasta el día de hoy o cuando se haga la consulta, pues bueno todo bien hasta aquí....
Pero un pequeño detalle que no lei en la documentación TIMESTAMPDIFF solo esta disponible a partir de MySQL5 y por desgracia mi servidor de hosting trae una versión 4, por lo cual no pude utilizar dicha función y no me quedo mas que hacerlo con instrucciones IF..
Y bueno les dejo la sintaxis de como calcular edades en MySQL4 así es como yo resolví mi problema si encuentra algún error de lógica me gustaría que me comentarán
SELECT nacimiento,
IF(MONTH(now())<MONTH(nacimiento),
(YEAR(now())-YEAR(nacimiento))-1
,IF((MONTH(now())=MONTH(nacimiento))&&(DAY(now())>=DAY(nacimiento) ),
(YEAR(now())-YEAR(nacimiento)),
IF((MONTH(now())>MONTH(nacimiento)),
(YEAR(now())-YEAR(nacimiento)),
(YEAR(now())-YEAR(nacimiento))-1)
) ) edad
from registro;
donde now() es una funcion que retorna la fecha actual y nacimiento es un campo de la tabla registro donde guardo la fecha de nacimiento del usuario en un campo Date