Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2009, 09:21
Avatar de erick_arcini
erick_arcini
 
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Función para el cálculo de la edad

Estimados (que dijeron ando preguntando no?... jaja) no, aquí les dejo una función para calcular la edad con los días transcurridos, igual y si ya se encontraba una pues ya ni modo, aquí la dejo.


Código:
create function edad(@nacimiento as datetime)
returns varchar(25)
as 
begin
declare @aYear varchar(3)
declare @diasTranscurridos varchar(3)

set @aYear = year(getdate()) - year(@nacimiento)

if month(getdate()) < month(@nacimiento)
	begin
		set @aYear = @aYear - 1 
		set @diasTranscurridos = datediff(day,convert(varchar,year(getdate())) + '/01/01',getdate())+1
		set @diasTranscurridos = 365 - @diasTranscurridos
	end
else
	begin
		if month(getdate()) > month(@nacimiento)
			begin
				set @diasTranscurridos = datediff(day,convert(varchar,year(getdate())) + '/01/01',getdate())+1
			end
		else
			begin
				if month(getdate()) = month(@nacimiento)
					begin
						if day(getdate()) = day(@nacimiento)
							begin
								set @aDia = 0
							end
						else
							begin
								if day(getdate()) < day(@nacimiento)
									begin
										set @aYear = @aYear - 1 
										set @diasTranscurridos = datediff(day,convert(varchar,year(getdate()) - 1) + '/01/01',convert(varchar,year(getdate()) - 1) + '/31/12') - (datediff(day,convert(varchar,year(getdate())) + '/' + convert(varchar,month(getdate())) + '/01',getdate()) + 1)
									end
								else
									begin 
										if day(getdate()) > day(@nacimiento)
											begin 
												set @diasTranscurridos = datediff(day,convert(varchar,year(getdate())) + '/' + convert(varchar,month(getdate())) + '/01',getdate())+1
											end
									end
							end
					end
			end
	end
return @aYear + ' años ' + @diasTranscurridos + ' días'
end
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.