SoloCodigo

Bases de Datos => Otras Bases de Datos => Mensaje iniciado por: El nuevo en Martes 13 de Diciembre de 2005, 23:54

Título: Calcular Edad En Base A Fecha
Publicado por: El nuevo en Martes 13 de Diciembre de 2005, 23:54
Hola a todos ?

Mi problema es el siguiente, tengo una BD con la informacion de los alumnos y sus fechas de nacimiento, sin embargo un reporte requiere que se muestren las edades, alguien sabe como puedo obtener a partir de la fecha de nacimiento la edad en SQL ? para obtener los resultados utilizo un StoredProcedure.

Gracias !  :hola:
Título: Re: Calcular Edad En Base A Fecha
Publicado por: jrsmith en Miércoles 14 de Diciembre de 2005, 01:17
Funciones que devuelven fechas:

Función Descripción

DATE o Devuelve la fecha de hoy.

TODAY Si hoy es 25/12/89, DATE() devuelve {12/25/89}

DATEVAL Convierte una cadena de caracteres a una fecha.

DATEVAL(‘01/30/89’) devuelve {01/30/89}

CTOD Convierte una cadena de caracteres a una fecha. Se puede utilizar un segundo parámetro para especificar el formato de la fecha devuelta: 0 (por defecto devuelve MM/DD/YY, 1 devuelve DD/MM/YY y 2 devuelve YY/MM/DD.

CTOD(‘01/30/89’) devuelve {01/30/89}

CTOD(‘01/30/89’,1) devuelve {30/01/89}

Ejemplos de funciones de fecha:

SELECT SUM(AUSENCIAS) FROM FALTASAL WHERE TODAY()-FECHA<= 5

Esta sentencia nos dirá el número total de horas ausencias de los alumnos en los últimos 5 días.

SELECT NOMBRE+' '+APELLIDOS, YEAR(TODAY()) - YEAR(FECHA_NACIMIENTO) FROM ALUMNOS

Mostrará a cada alumno con su edad en años (Cumplidos o que cumplirá)

Para tener en cuenta el mes y día actuales y calcular la edad sería:

SELECT NOMBRE+' '+APELLIDOS,

IIF(MONTH(FECHA_NACIMIENTO) > MONTH(TODAY()), YEAR(TODAY())-YEAR(FECHA_NACIMIENTO) - 1,

IIF(MONTH(TODAY()) = MONTH(FECHA_NACIMIENTO) AND DAY(FECHA_NACIMIENTO) > DAY(TODAY()),

YEAR(TODAY())-YEAR(FECHA_NACIMIENTO) - 1, YEAR(TODAY())-YEAR(FECHA_NACIMIENTO))) FROM ALUMNOS



tomada de  :devil:
http://atenea.pntic.mec.es/centros/ies2000...ql.htm#opfechas (http://atenea.pntic.mec.es/centros/ies2000/sql/iessql.htm#opfechas)
Título: Re: Calcular Edad En Base A Fecha
Publicado por: El nuevo en Viernes 16 de Diciembre de 2005, 21:43
jrsmith Muchas gracias ya lo probe y funciona perfecto, muchas gracias !!
Título: Re: Calcular Edad En Base A Fecha
Publicado por: jrsmith en Martes 20 de Diciembre de 2005, 18:05
Por nada, fue un placer y un gusto haberte sido de utilidad :comp:
Título: Re: Calcular Edad En Base A Fecha
Publicado por: colacao en Sábado 7 de Enero de 2006, 00:28
Buenas,  yo he intentado utilizar el IIF para calcular la edad en SQLSever y me da error pq dice que no reconoce esa funcion.
Saben pq puede ser?
Gracias.
Ciaooooo
Título: Re: Calcular Edad En Base A Fecha
Publicado por: colacao en Sábado 7 de Enero de 2006, 01:31
Al final lo consegui. Investigando por ahi encontre el equivalente al IIF para SQL SERVER que es el CASE.

Código: Text
  1.  
  2. CASE WHEN MONTH(Fecha) &#62; MONTH(GETDATE()) THEN (YEAR(GETDATE()) - YEAR(Fecha) - 1)
  3. WHEN MONTH(GETDATE()) = MONTH(Fecha) AND DAY(Fecha) &#62; DAY(GETDATE()) THEN YEAR(GETDATE()) - YEAR(Fecha) - 1
  4. ELSE YEAR(GETDATE()) - YEAR(Fecha) END AS edad
  5.  
  6.  

Ciaoooo