SQL : Funzione per calcolare l’etÃ
Calcola l’età fornendo una data e confrontandola con la data attuale:
CREATE FUNCTION [dbo].[Age] (@birthday DATETIME)
RETURNS INT
AS
BEGIN
DECLARE @age INT
DECLARE @d AS DATETIME
SET @d=GETDATE()
SELECT @age = DATEDIFF(yy, @birthday, @d) -
--Se non ha compiuto gli anni nell'ultimo anno in corso sottrae 1 anno.
( CASE
WHEN ( DATEPART(m,@birthday ) > DATEPART(m, @d) )
OR ( DATEPART(m, @birthday ) = DATEPART(m, @d) AND DATEPART(d, @birthday) > DATEPART(d, @d) )
THEN 1
ELSE 0
END
)
RETURN( @age )
END
Per eseguirla :
SELECT DBO.AGE('05/02/1977')
Una variante potrebbe essere sapere che età si aveva in un anno specifico, quindi passando due parametri anzichè uno:
CREATE FUNCTION [dbo].[AgeAt] (@birthday DATETIME, @d DATETIME)
RETURNS INT
AS
BEGIN
DECLARE @age INT
SELECT @age = DATEDIFF(yy, @birthday, @d) -
--Se non ha compiuto gli anni nell'ultimo anno in corso sottrae 1 anno.
( CASE
WHEN ( DATEPART(m,@birthday ) > DATEPART(m, @d) )
OR ( DATEPART(m, @birthday ) = DATEPART(m, @d) AND DATEPART(d, @birthday) > DATEPART(d, @d) )
THEN 1
ELSE 0
END
)
RETURN( @age )
END
E per utilizzarla semplicemente :
select dbo.AgeAt ('05/02/1977', '01/02/1998') -- risultato 21
luglio 8, 2010
·
admin ·
One Comment
Posted in: Coding, Programmazione, SQL

Code Emotion 2012
One Response
Sei proprio un genio 🙂
Leave a Reply