Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/01/2009, 17:01
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Función para el cálculo de la edad

Hola,

Odio decir esto pero la lógica está mal (después de corregir solamente el problema de la declaración de la variable @aDia). El resultado que obtengo en MSSQL 2000 :

para la fecha 20 de Noviembre de 1972 ('19721101')
al día de hoy 28 de Enero de 2009: 36 años 337 días.
Cuando en realidad debería ser : 36 Años 69 Dias

para la fecha 27 de Enero de 2009 ('20090127')
al día de hoy : 0 años 28 días
En realidad debería ser : 0 Años 1 Dias

Con 30 de Enero de 1992 genera un error.
Creo que podría ser mas simple, es un script :
(Para sp ó function hay que parametrizarlo, etc.)

Código:
declare @fecha datetime
declare @final datetime
declare @annos integer
declare @dias  integer
declare @temp  datetime

-- set @fecha = '20090128'
-- set @final = '20090128'

set @fecha = '19721120'
set @final = getdate()

set @annos = datediff(Year, @fecha, @final)
set @temp = dateadd(Year, @annos, @fecha)
set @dias = datediff(Day, @temp, @final)
if sign(@dias) < 0
begin
  set @annos = @annos - 1
  set @temp = dateadd(Year, @annos, @fecha)
  set @dias = datediff(Day, @temp, @final)
end

print CONVERT(NVARCHAR, @annos) + N' Años ' + CONVERT(NVARCHAR, @dias) + N' Dias'
Saludos,