Buenas tardes amigos del foro,
tengo un procedimiento almacenado en firebird que me calcula la edad completa de una persona. el caso es que para ver los datos simplemente ejecuto esta instrucción:
Código SQL
[-]select * from edadcompleta('12/10/1980')
eso me devuelve 32 años, 0 meses, 25 dias.
he creado un procedimiento en SQL Server 2008
Código SQL
[-]USE [IPSSALUDSOCIAL]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spEdadCompleta]
@Fecha datetime ,
@Resultado varchar(250) output
AS
declare @a integer;
declare @aa integer;
declare @m integer;
declare @mm integer;
declare @d integer;
declare @dd integer;
declare @anio integer;
declare @mes integer;
declare @dia integer;
SELECT @a = DATEPART(YEAR, @Fecha ),
@m = DATEPART(MONTH, @Fecha),
@d = DATEPART(day, @Fecha),
@aa = DATEPART(year, CURRENT_TIMESTAMP),
@mm = DATEPART(month, CURRENT_TIMESTAMP),
@dd = DATEPART(day, CURRENT_TIMESTAMP),
@anio = @aa - @a;
if (@m <= @mm)
BEGIN
select @mes = @mm - @m;
END
else
begin
select @mes = @mm + 12 - @m;
select @anio = @anio - 1;
end
if (@d <= @dd)
select @dia = @dd - @d;
else
begin
if (@aa % 4 = 0)
select @dia = @dd + 29 - @d;
else
select @dia = @dd + 28 - @d;
select @mes = @mes - 1;
end
if (@mes < 0)
begin
select @anio = @anio - 1;
select @mes = @mes + 12;
end
if (@anio = 1)
select @Resultado = cast(@anio as varchar(4))+' Año, ';
else
select @Resultado = cast(@anio as varchar(4))+' Años, ';
if (@mes = 1)
select @resultado = @resultado+cast(@mes as varchar(2))+' Mes, ';
else
select @Resultado = @Resultado+cast(@mes as varchar(2))+' Meses, ';
if (@dia = 1)
select @Resultado = @Resultado+cast(@dia as varchar(2))+' Día ';
else
select @Resultado = @Resultado+cast(@dia as varchar(2))+' Días ';
GO
mi pregunta es: cómo recupero la edad. Al estilo de firebird.
Gracias de Antemano por vuetra ayuda.
Gustavo Cruz