SQL : Funzione per calcolare l’età
Calcola l’età fornendo una data e confrontandola con la data attuale:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 :
1 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 :
1 | select dbo.AgeAt ( '05/02/1977' , '01/02/1998' ) -- risultato 21 |
luglio 8, 2010
·
admin ·
One Comment
Posted in: Coding, Programmazione, SQL
One Response
Sei proprio un genio
Leave a Reply