Página 1 de 1

calculo edad

NotaPublicado: Lun Ene 12, 2009 12:32 pm
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?

Re: calculo edad

NotaPublicado: Lun Ene 12, 2009 2:36 pm
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.

Re: calculo edad

NotaPublicado: Mar Ene 13, 2009 3:04 am
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?

Re: calculo edad

NotaPublicado: Mar Ene 13, 2009 3:52 am
por QuazzieEvil
Para calcular los años puedes dividir el total de meses por doce

Código: Seleccionar todo   Expandir vistaContraer vista
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   Expandir vistaContraer vista
MOD( DATEDIFF( 'mm', "DOB", CURRENT_DATE ), 12 )

Re: calculo edad

NotaPublicado: Mar Ene 13, 2009 2:24 pm
por jlotero
Excelente. Funciona todo. Muchísimas gracias.
No pude encontrar como registrar esta consulta como resuelta.
Nuevamente muchas gracias.

Re: calculo edad

NotaPublicado: Mié Feb 18, 2009 5:30 pm
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?

Re: calculo edad

NotaPublicado: Jue Feb 19, 2009 12:17 am
por pld
Ya lo he descubierto. Era una asignación mala de un campo. Muchas gracias a todos. Pld

Re: calculo edad

NotaPublicado: Vie Jun 05, 2009 5:32 pm
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?