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

Puedo Calcular edad Teniendo Fecha Nac

Estas en el tema de Puedo Calcular edad Teniendo Fecha Nac en el foro de Bases de Datos General en Foros del Web. Amigos tengo una duda Tengo un campo de todas las fechas de Nacimiento de mis clientes de tipo varchar ahora implemente un nuevo campo llamado ...
  #1 (permalink)  
Antiguo 10/11/2009, 14:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Puedo Calcular edad Teniendo Fecha Nac

Amigos tengo una duda
Tengo un campo de todas las fechas de Nacimiento de mis clientes de tipo varchar ahora implemente un nuevo campo llamado edad de tipo int(2) y queria saber si es posible hacer una consulta en mi bd para que directamente calcule la edad teniendo la fecha_N en este formato ( 28/04/1987) D-M-AÑO, de cada uno de mis clientes en una misma tabla.

Si es posible por favor podrian mostrarme un ejemplo.

Esta en mysql les agradezco por su tiempo pero es una duda que tengo Gracias.
  #2 (permalink)  
Antiguo 10/11/2009, 15:05
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

No te recomiendo tener un campo para almacenar un dato que puede ser calculado con los datos originales.
Si añades un campo para este fin, tendrías que actualizarlo cada año, ya que no sería dinamiico. si haces esto:
Código sql:
Ver original
  1. SELECT abs(timestampdiff(YEAR,now(),fnacimiento)) edad FROM tabla;

obtienes la edad con base en la fecha actual y la fecha de nacimiento. y siempre será la edad en tiempo real.

PD: fnacimiento es el campo de la fecha de nacimiento de tu tabla. reemplaza por los valores indicados.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/11/2009, 15:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Respuesta: Puedo Calcular edad Teniendo Fecha Nac

Gracias Huesos pero hice esto:

SELECT abs(timestampdiff(YEAR,now(),fecha_n)) edad FROM clientes;

Y me salio todas NULL no se pq
  #4 (permalink)  
Antiguo 10/11/2009, 15:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

prueba esto:

Código sql:
Ver original
  1. SELECT timestampdiff(YEAR,'1984-11-12',now()) mi_edad;

Esa es mi fecha de nacimiento y esa es mi edad.
Pruebala con cualquier fecha y mira donde tienes errores.

En el primero te lo puse con abs, pero es solo para quitarle el signo negativo. Es mas optimo si se cambia el orden de now y la fecha de nacimiento y se obtiene el mismo valor.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 10/11/2009, 15:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Respuesta: Puedo Calcular edad Teniendo Fecha Nac

Perfecto funciona asi y tienes 24 pero las fechas de Nac estan metidas en este formato 06/07/1993 por decir hice esto:
SELECT timestampdiff(year,'11-12-1984',now()) mi_edad; ME SALE NULL
AHORA HICE ESTO.
SELECT timestampdiff(year,'11/12/1984',now()) mi_edad; ME SALE NULL

La consulta anterior huesos esta:

SELECT abs(timestampdiff(YEAR,now(),fecha_n)) edad FROM clientes;

TENDRIA QUE HABER CALCULADO SUS EDADES DE TODOS LOS CLIENTES ?? PERO IGUAL ME SALE NULL??

NOTA LAS FECHAS DE NAC SON DE TIPO VARCHAR Y EL CAMPO EDAD TIPO INT 2
  #6 (permalink)  
Antiguo 10/11/2009, 15:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

se me olvidaba en tu primer post que la fecha estaba en formato varchar y no date o datetime.

Código sql:
Ver original
  1. SELECT timestampdiff(YEAR,str_to_date('12/11/1984','%d/%m/%Y'),now()) mi_edad;

Código sql:
Ver original
  1. SELECT timestampdiff(YEAR,str_to_date(fecha_n,'%d/%m/%Y'),now()) edad FROM clientes;

Donde está la fecha, pon el campo de tu base de datos.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 10/11/2009, 16:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

GRACIA HUESOS ME SALE CON ESTO MUY BIEN ASI:

SELECT timestampdiff(year,str_to_date(fecha_n,'%d/%m/%Y'),now()) edad FROM clientes;
http://img10.imageshack.us/img10/7756/86849224.jpg
http://img81.imageshack.us/img81/3319/dosf.jpg

PERO COMO PUEDO AHORA PASAR ESAS EDADES CALCULADAS A MI CAMPO EDAD DE MI TABLA CLIENTES Y ESTEN GUARDADAS.TENDRIA QUE HACER UN UPDATE A LA MISMA VES O COMO PUEDO HACER ?? YA SE QUE TENDRIA QUE ACTUALIZAR CADA AÑO PERO LA EDAD ME SIRVE EN ESTE CASO PARA SABER A QUE EDAD INGRESO AL EMPLEO?
  #8 (permalink)  
Antiguo 10/11/2009, 16:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

Como te decia... tener un campo edad es una responsabilidad anual de cambiar este valor haciendo uso de la sentencia. Te digo como es pero no te lo recomiendo.

Código sql:
Ver original
  1. UPDATE clientes SET edad=timestampdiff(YEAR,str_to_date(fecha_n,'%d/%m/%Y'),now());

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 10/11/2009, 16:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 281
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Puedo Calcular edad Teniendo Fecha Nac

Gracias huesos52 eres un tigre pero la verdad voy hacer caso a tu consejo
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 11:35.