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