jueves, 5 de julio de 2012

Edad o diferencia entre fechas en SQL.

Pensaba que para calcular la edad en SQL lo podía hacer con DATEDIFF y el yyyy, pero no. Resta los años, así que he creado una función para calcular la edad:


CREATE FUNCTION [dbo].[fnEdad]
( @F1 AS SMALLDATETIME,
@F2 AS SMALLDATETIME
)
RETURNS INT
AS
BEGIN

DECLARE @NEDAD AS INT
SET @NEDAD = DATEDIFF(YYYY,@F1, @F2)--Realiza la diferencia entre años, si hace de '2011-12-31' a '2012-01-01'
-- devuelve 1.

IF DATEADD(YYYY, @NEDAD, @F1) > @F2 AND @NEDAD > 0 -- Es el año, pero faltan días, semanas o meses
BEGIN
SET @NEDAD  = @NEDAD  - 1
END

RETURN ISNULL(@NEDAD,0)

END