calculo edad

Discute sobre las herramientas de la base de datos
Responder
jlotero
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

calculo edad

Mensaje por jlotero »

Hola:
He creado una tabla que incluye dos campos con formato FECHA (fecha_nacimiento y fecha_ingreso). ¿Es posible crear una consulta que incluya un campo que calcule la edad a partir de esos dos campos?
QuazzieEvil
Mensajes: 99
Registrado: Sab Dic 13, 2008 6:45 pm

Re: calculo edad

Mensaje por QuazzieEvil »

Si, usa la funcion the SQL DateDiff en ves de el campo

Ejemplo: DATEDIFF('yy',"fecha_nacimiento",CURRENT_DATE)
-->puedes indicar cualquier Alias en el siguiente renglon.
jlotero
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

Re: calculo edad

Mensaje por jlotero »

Funcionó en parte.
Soy médico pediatra, y me interesa que la edad pueda mostrarse en años y meses (aunque sean en dos campos separados).
La expresión
DATEDIFF('yy',"fecha_nacimiento","fecha_ingreso")
me permitió calcular el número de años, aunque con el resultado redondeado. Así, un niño de 9 meses, mostró como resultado 1 (y no 0).
Lo pude resolver así:
DATEDIFF('mm',"fecha_nacimiento","fecha_ingreso") / 12
con lo que el resultado fue 0.
En ambos casos me quedó pendiente como calcular el número de meses.
¿Existe alguna función similar a TRUNC() que pueda usarse en el primer ejemplo?
¿Como puedo resolver el tema de los meses?
QuazzieEvil
Mensajes: 99
Registrado: Sab Dic 13, 2008 6:45 pm

Re: calculo edad

Mensaje por QuazzieEvil »

Para calcular los años puedes dividir el total de meses por doce

Código: Seleccionar todo

DATEDIFF( 'mm', "DOB", CURRENT_DATE ) / 12 
y para calcular los meses que sobran, pedes calcular el MODULO de los meses y 12.

Código: Seleccionar todo

MOD( DATEDIFF( 'mm', "DOB", CURRENT_DATE ), 12 )
jlotero
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

Re: calculo edad

Mensaje por jlotero »

Excelente. Funciona todo. Muchísimas gracias.
No pude encontrar como registrar esta consulta como resuelta.
Nuevamente muchas gracias.
pld
Mensajes: 6
Registrado: Mié Feb 18, 2009 5:22 pm

Re: calculo edad

Mensaje por pld »

Hola a todos. He seguido las instrucciones para el cálculo de la fecha pero me aparece el siguiente error:

No se pudieron cargar los contenidos de los datos.Estado SQL: 37000
Código de error: -16

Wrong data type: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff in statement [SELECT "ID_PACIENTE", "NOMBRE", "APELLIDOS", "CUMPLEAÑOS", DATEDIFF( 'mm', "CUMPLEAÑOS", CURRENT_DATE ) / 12 AS "Años", MOD( DATEDIFF( 'mm', "CUMPLEAÑOS", CURRENT_DATE ), 12 ) AS "Meses" FROM "Pacientes" AS "Pacientes"]

El comando SQL que comporta este error es:

SELECT "ID_PACIENTE", "NOMBRE", "APELLIDOS", "CUMPLEAÑOS", DATEDIFF( 'mm', "CUMPLEAÑOS", CURRENT_DATE ) / 12 AS "Años", MOD( DATEDIFF( 'mm', "CUMPLEAÑOS", CURRENT_DATE ), 12 ) AS "Meses" FROM "Pacientes" AS "Pacientes"

Mi SO es un Mac OS X 10.5.2 y la versión del OO es la 3.0.1.
Sin embargo en windows XP me funciona perfectamente
¿Alguna ayuda de lo que puede estar pasando?
pld
Mensajes: 6
Registrado: Mié Feb 18, 2009 5:22 pm

Re: calculo edad

Mensaje por pld »

Ya lo he descubierto. Era una asignación mala de un campo. Muchas gracias a todos. Pld
delmarques
Mensajes: 3
Registrado: Mar Jun 02, 2009 3:55 pm

Re: calculo edad

Mensaje por delmarques »

Pues sí, curiosamente DATEDIFF('yy',fecha1,fecha2) redondea los años.

Es decir
3 años y 2 meses ----> 3 años
3 años y 9 meses ----> 4 años

En cambio, por lo que he probado, para los meses no hay ese problema. No importa si son 10 o 20 días de diferencia que te dice que hay 0 meses de diferencia.

¿Será un comportamiento erróneo de DATEDIFF( ) para los años?
Responder