Es obvio que la edad actual de una persona se calcula restando la fecha del momento y la fecha de nacimiento. Hay varias formas de hacerlo, cada una con una mayor precisión que la anterior. En este artículo vamos a utilizar las funciones para restar fechas y obtener componentes de fechas de MySQL (aquí hay una lista de esas funciones). Para aplicar estas ideas a otros gestores de BD, debes buscar las funciones equivalentes en esos gestores.
Restando años
Nos permite hacernos una idea aproximada de la edad de una persona. No es la solución ideal porque, erróneamente, podemos añadirle un año a la edad calculada si el mes de la fecha de nacimiento es posterior al mes de la fecha actual (y también habría que tener en cuenta el día).
year(current_date()) - year(fechaNacimiento)
Restando días
Usando la función datediff()
calculamos la diferencia de días entre la fecha del momento y la fecha de nacimiento de la persona; dividimos por 365 (ya que cada año tiene 365 días); luego truncamos los decimales. Es mucho más precisa que la anterior aproximación, pero aun así podemos cometer errores ya que no consideramos en el cálculo a los años bisiestos, que tienen 366 días.
truncate(datediff(current_date(), fechaNacimiento)/365, 0)
Cálculo exacto
MySQL dispone de la función timestampdiff()
. En ella, además de las fechas a sustraer, podemos indicar qué es lo que queremos obtener: diferencia de años, meses, días, minutos... Nos devolverá la diferencia exacta teniendo en cuenta los años bisiestos. Hay que tener cuidado, porque las fechas se indican en el orden contrario que en la función datediff()
. Aplicado a nuestro caso queda así:
timestampdiff(YEAR, fechaNacimiento, current_date())
No hay comentarios:
Publicar un comentario