Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] consulta sql para obtener edad

Estas en el tema de consulta sql para obtener edad en el foro de Mysql en Foros del Web. hola necesito tener la edad con la fecha de nacimiento , esta es la sentencia obviamente esta mal pero no se me ocurre que poner ...
  #1 (permalink)  
Antiguo 08/10/2013, 09:58
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
consulta sql para obtener edad

hola necesito tener la edad con la fecha de nacimiento
, esta es la sentencia obviamente esta mal pero no se me ocurre que poner para que ande
Código MySQL:
Ver original
  1. SELECT TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) AS edad , *
  2. FROM curriculums
  3. WHERE numero LIKE '%$dni%' and edad BETWEEN '$edaddesde' and '$edadhasta' "
  #2 (permalink)  
Antiguo 08/10/2013, 10:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql para obtener edad

No puedes usar en el WHERE un alias definido para una columna en el SELECT.
Por otro lado, tampoco lo necesitas...
Código MySQL:
Ver original
  1. SELECT  *
  2. FROM curriculums
  3. WHERE numero LIKE '%$dni%'
  4. AND TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) BETWEEN $edaddesde AND $edadhasta
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/10/2013, 10:36
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: consulta sql para obtener edad

Genial muchas gracias,, lo que si nose por que me devuelve 0 resultados,
aunque deje vacio el campo de edad y solo pongo el de dni me devuelve vacia la busqueda ,,
  #4 (permalink)  
Antiguo 08/10/2013, 10:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql para obtener edad

Es muy probable que no tengas datos que cumplan con el rango, que no estén correctamente almacenadas las fechas, o bien que al menos una de las variables no tenga lo que supones que tiene (errores de programación).
Por empezar: ¿El campo fechanacdia es DATE, DATETIME o VARCHAR?
Luego, prueba esto y dime si devuelve correctamente las edades:
Código MySQL:
Ver original
  1. SELECT  c.*, TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) edad
  2. FROM curriculums c
Si devuelve NULL, negativos o ceros en la edad, hay un error de datos.
y luego verifiquemos esto:
Código MySQL:
Ver original
  1. SELECT  *
  2. FROM curriculums c
  3. WHERE numero LIKE '%$dni%'
Si esta última no devuelve datos, o bien no tienes documentos con ese valor, o bien la variable no contiene lo que debería (eso verlo en el foro de PHP).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/10/2013, 17:49
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: consulta sql para obtener edad

el campo esta en varchar lo pase a date y nada

Ejecuto la primer sentencia y todo ok me devuelve en numero la edad como un campo mas en la tabla

2da consulta

Me da el nombre correcto del dni que ingrese en el form
  #6 (permalink)  
Antiguo 08/10/2013, 18:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql para obtener edad

Cita:
el campo esta en varchar lo pase a date y nada
No sirve sólo pasarlo a VARCHAR, si además no verificas que los datos cumplan con el formato AAAA-MM-DD, que es el que las fechas tienen en las bases de datos (Luego se usan funciones para obtener el formato de presentación, o bien programación).
Cita:
Ejecuto la primer sentencia y todo ok me devuelve en numero la edad como un campo mas en la tabla
Postea el resultado acá. No me sirve que digas "todo OK", yo tengo que verlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/10/2013, 18:19
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: consulta sql para obtener edad

En el formulario pongo un dni de un registro que ya tengo en la base y num_arow me devuelve = 1 con su nombre y Apellido aca esta el codigo que uso , Gracias

Cita:
Editado: Código de programación OFF TOPIC en foros de Bases de Datos. Leer las normas del foro.

Última edición por gnzsoloyo; 08/10/2013 a las 19:49
  #8 (permalink)  
Antiguo 08/10/2013, 19:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql para obtener edad

Tabla de datos que devuelve la consulta, no código de programación, que es OFF TOPIC y no nos dice absolutamente nada.
Datos. Tablas. Ejemplo real de datos.

En cuanto a la fecha... ¿Cómo estaban guardadas? ¿Como DD/MM/AAAA o como AAAA-MM-DD?
En el primer caso, la conversión de tipo de columna puede haber causado un desastre...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 10/10/2013, 07:29
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: consulta sql para obtener edad

Gracias por tu tiempo

Código MySQL:
Ver original
  1. SELECT  *
  2. FROM curriculums c
  3. WHERE numero LIKE '%$dni%'
ejecuto esto y me devuelve 0 columnas pero evidentemente debe ser por que $dni no tiene valor asinado en la colsuta directa

Última edición por gnzsoloyo; 10/10/2013 a las 07:37 Razón: Mal etiquetado
  #10 (permalink)  
Antiguo 10/10/2013, 07:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql para obtener edad

Lo que no tiene $dni es un valor que esté siendo ingresado. Si el valor efectivamente se está ingresando en los formularios que toman los datos, entonces tienen un error de lógica de programación en alguna parte, porque tal valor no llega jamás a la variable, y por ende no queda incorporada en la consulta.
Lo que sea PHP, lo debes preguntar en el Foro de PHP, es off-topic en los de BBDD.

Por cierto, ¿te has dado cuenta que sigues sin responderme la pregunta de la fecha?

Por favor, cuando te hagamos una pregunta, procura responderla. Ayuda a ayudar...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 10/10/2013, 08:14
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: consulta sql para obtener edad

Hola la fecha esta guardada en base de datos como aaaa-mm-dd

encontre el error me falto ponerle enctype="multipart/form-data" al formulario

:) gracias muchas por el apoyo de verdad

Última edición por mktalternativa; 10/10/2013 a las 08:26

Etiquetas: edad, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.