MySQL - Calcular edad y mostrar por rango

 
Vista:
Imágen de perfil de Felix
Val: 3
Ha aumentado su posición en 22 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Calcular edad y mostrar por rango

Publicado por Felix (8 intervenciones) el 24/04/2016 03:23:03
Saludos!

Lo que deseo hacer es consultar mi base de datos y calcular la edad de las personas; luego mostrar solo los que cumplan un criterio determinado.

La fecha de nacimiento esta guardada en un "varchar" con el siguiente formato dd/mm/yyyy.

Deseo poder mostrar por ejemplo solo los que tengan entre 0 y 13 años, 14 y 18, 19 y 54, 19 y 59 años de edad calculando la fecha actual con la de nacimiento.

Estaba pensando tal vez en hacer una consulta virtual y calcular la edad y luego seleccionarlos según criterio.

¿En que me pueden ayudar?

Estoy usando PHP para enviar las consultas y calcular.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Calcular edad y mostrar por rango

Publicado por Gonzalo (103 intervenciones) el 24/04/2016 04:12:32
Lo primero que deberías hacer es modificar esa "cosa" que tienes mal definida:

1
La fecha de nacimiento esta guardada en un "varchar" con el siguiente formato dd/mm/yyyy.



Eso que tienes es un error de diseño de los peores, que sólo te complicará las consultas.

Es una solución usual en programadores que no tienen ni idea de lo que es una base de datos, y desconocen completamente cómo hacer para que un dato de fecha se almacene correctamente en la base, y luego se pueda mostrar en un formato aceptable para los usuarios.
Todo esto, dicho sin ofender.

El dato tal y como lo tienes NO SIRVE para hacer consultas como las que quieres sin previamente realizar conversiones usando funciones nativas de MySQL, una tarea que te podrías ahorrar si tuvieras el campo correctamente definido como DATE.

Si el campo estuviese como DATE, la consulta que necesitas es de una simplicidad absoluta. Pero como lo tienes, la sintaxis se complica.
Así que, ¿que quieres hacer? ¿Corregir el defecto y tener una consulta optimizada, o parchar la consulta, haciéndola medio ilegible, pero no tocar el tipo de dato?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Felix
Val: 3
Ha aumentado su posición en 22 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Calcular edad y mostrar por rango

Publicado por Felix (8 intervenciones) el 24/04/2016 18:41:58
Saludos Gonzalo!

Lejos de ofender estoy muy agradecido por tu respuesta y tienes toda la razón. Ahora mismo estoy resolviendo el problema. Ya lo había pensado antes pero no se porque razón no lo había echo jejeje

Ahora bien, luego de hacer esos arreglos como podría resolver el problema mayor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar