none
como calcular la edad de una persona con una funcion sql?

    Question

  • hola amigos..

    estoy tratando de calcular la edad de una persona pero no se me ocurre que digamos como hacerlo...

    agredezco desde ya una ayudita...muchas gracias

    Friday, March 09, 2012 5:58 PM

Answers

  • Hola amigo,

    Prueba con esto

    select (cast(datediff(dd,'1980-02-05',GETDATE()) / 365.25 as int))

    Saludos
    • Marked as answer by MaxelRorro Friday, March 09, 2012 6:20 PM
    Friday, March 09, 2012 6:09 PM

All replies

  • Hola amigo,

    Prueba con esto

    select (cast(datediff(dd,'1980-02-05',GETDATE()) / 365.25 as int))

    Saludos
    • Marked as answer by MaxelRorro Friday, March 09, 2012 6:20 PM
    Friday, March 09, 2012 6:09 PM
  • muchas gracias ;)
    Friday, March 09, 2012 6:21 PM
  • En palabras seria la diferencia en años entre las dos fechas, pero restandole 1 si el mes y/o el dia del mes, de la fecha en cuestion, es menor que el mes y/o/ dia del mes de la fecha de nacimiento.

    USE tempdb;
    GO
    CREATE FUNCTION dbo.CalcEdad(
    @dt1 date,
    @dt2 date
    )
    RETURNS smallint
    WITH RETURNS NULL ON NULL INPUT
    AS
    BEGIN
    RETURN (
    SELECT
    	DATEDIFF([year], @dt1, @dt2) - 
    	CASE 
    	WHEN (MONTH(@dt2) * 100) + DAY(@dt2) < (MONTH(@dt1) * 100) + DAY(@dt1) THEN 1
    	ELSE 0
    	END
    );
    END;
    GO
    DECLARE
    	@dt1 date = '19640929', 
    	@dt2 date = '20120927';
    
    SELECT dbo.CalcEdad(@dt1, @dt2) AS Edad;
    GO
    DROP FUNCTION dbo.CalcEdad;
    GO

    Puedes usar el mismo principio para extender el chequeo hasta la hora y/o minuto.

    Si quieres leer mas sobre calculos datetime, entonces bingle por "site:sqlmag.com itzik ben-gan + DATETIME Calculations, Part".


    AMB

    Some guidelines for posting questions...

    Friday, March 09, 2012 6:38 PM