calculo edad

Discute sobre las herramientas de la base de datos

calculo edad

Notapor jlotero » Lun Ene 12, 2009 12:32 pm

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?
jlotero
 
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

Re: calculo edad

Notapor QuazzieEvil » Lun Ene 12, 2009 2:36 pm

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.
QuazzieEvil
 
Mensajes: 99
Registrado: Sab Dic 13, 2008 6:45 pm

Re: calculo edad

Notapor jlotero » Mar Ene 13, 2009 3:04 am

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?
jlotero
 
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

Re: calculo edad

Notapor QuazzieEvil » Mar Ene 13, 2009 3:52 am

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 )
QuazzieEvil
 
Mensajes: 99
Registrado: Sab Dic 13, 2008 6:45 pm

Re: calculo edad

Notapor jlotero » Mar Ene 13, 2009 2:24 pm

Excelente. Funciona todo. Muchísimas gracias.
No pude encontrar como registrar esta consulta como resuelta.
Nuevamente muchas gracias.
jlotero
 
Mensajes: 3
Registrado: Lun Ene 12, 2009 12:18 pm

Re: calculo edad

Notapor pld » Mié Feb 18, 2009 5:30 pm

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

Notapor pld » Jue Feb 19, 2009 12:17 am

Ya lo he descubierto. Era una asignación mala de un campo. Muchas gracias a todos. Pld
pld
 
Mensajes: 6
Registrado: Mié Feb 18, 2009 5:22 pm

Re: calculo edad

Notapor delmarques » Vie Jun 05, 2009 5:32 pm

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?
delmarques
 
Mensajes: 3
Registrado: Mar Jun 02, 2009 3:55 pm


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: MSN [Bot] y 2 invitados