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
One Response
Mauro - luglio 8, 2010
Sei proprio un genio 🙂
Leave a Reply