none
calcular idade RRS feed

  • Pergunta

  • bom dia pessoal

    Como faço para calcular a idade Correta de uma Pessoa

    Tenho Lido muitos posts aqui no forum

    E o qe mais se aproximou foi este:
    http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/0a5d984a-263b-482a-b6a1-cd0ed27b0a73

    porem gostaria que o resultado fosse desta forma

    Idade    Meses    Dias
    45         1           03

    para uma pessoa que tenha a data de nascimento '03/05/1967'

    e a resposta do link acima me da a quantidade de anos vividos,
    a quantidade de Meses Vividos e a Quantidade de Dias Vividos

    Desta Forma
    Idade      Meses   Dias        Horas
     45          541      16470     395290

    se alguem puder mo ajudar

    Agradeço


    Maricelmo

    quarta-feira, 6 de junho de 2012 12:42

Respostas

  • Maricelmo, bom dia.

    Segue o código.

    set dateformat dmy
    
    declare @data datetime, @dataDesteAno as datetime, @Ano int, @Mes int, @dia int
    set @data = '03/05/1967'
    set @dataDesteAno =		cast(year(getdate()) as varchar(4)) + 
    						right('00'+cast(MONTH(@data) as varchar(2)),2)+
    						right('00'+cast(DAY(@data) as varchar(2)),2)
    
    						
    set @Ano = DATEDIFF(year,@data,getdate())
    set @Mes = DATEDIFF(month,@dataDesteAno,getdate())
    set @Dia = DATEDIFF(day,dateadd(month,@Mes,@dataDesteAno),getdate())
    
    select 'Quem nasceu em ' + CAST(@data as varchar(20)) + ' possui ' +
    CAST(@ano as varchar(4)) + ' anos, ' +CAST(@Mes as varchar(2)) + ' mês(s) e ' +
    CAST(@dia as varchar(2)) + ' dias.'

    Abs.

    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Sugerido como Resposta Antero Marques quarta-feira, 6 de junho de 2012 13:32
    • Marcado como Resposta Maricelmo quarta-feira, 6 de junho de 2012 14:49
    quarta-feira, 6 de junho de 2012 13:05

Todas as Respostas

  • Maricelmo, bom dia.

    Segue o código.

    set dateformat dmy
    
    declare @data datetime, @dataDesteAno as datetime, @Ano int, @Mes int, @dia int
    set @data = '03/05/1967'
    set @dataDesteAno =		cast(year(getdate()) as varchar(4)) + 
    						right('00'+cast(MONTH(@data) as varchar(2)),2)+
    						right('00'+cast(DAY(@data) as varchar(2)),2)
    
    						
    set @Ano = DATEDIFF(year,@data,getdate())
    set @Mes = DATEDIFF(month,@dataDesteAno,getdate())
    set @Dia = DATEDIFF(day,dateadd(month,@Mes,@dataDesteAno),getdate())
    
    select 'Quem nasceu em ' + CAST(@data as varchar(20)) + ' possui ' +
    CAST(@ano as varchar(4)) + ' anos, ' +CAST(@Mes as varchar(2)) + ' mês(s) e ' +
    CAST(@dia as varchar(2)) + ' dias.'

    Abs.

    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Sugerido como Resposta Antero Marques quarta-feira, 6 de junho de 2012 13:32
    • Marcado como Resposta Maricelmo quarta-feira, 6 de junho de 2012 14:49
    quarta-feira, 6 de junho de 2012 13:05
  • Veja se isto te ajuda:

    DECLARE @Tabela TABLE
    (
    Nome VARCHAR(150),
    DataNascimento DATETIME
    )
    
    INSERT INTO @Tabela (Nome,DataNascimento) VALUES ('Yuri','1967-05-03')
    INSERT INTO @Tabela (Nome,DataNascimento) VALUES ('Robson','1990-05-01')
    INSERT INTO @Tabela (Nome,DataNascimento) VALUES ('Vitor','1981-03-20')
    INSERT INTO @Tabela (Nome,DataNascimento) VALUES ('Julio','2011-11-15')
    INSERT INTO @Tabela (Nome,DataNascimento) VALUES ('Aline','1950-01-07')
    
    DECLARE @DataAtual DATETIME
    SET @DataAtual = GETDATE()
    
    
    --SELECT COM RESULTADO
    SELECT '' + Nome + ' tem ' +
    	CONVERT(VARCHAR,DATEDIFF(YEAR,DataNascimento,@DataAtual)) + ' anos, viveu ' +
    	CONVERT(VARCHAR,DATEDIFF(MONTH,DataNascimento,@DataAtual)) + ' meses, '+
    	CONVERT(VARCHAR,TotalSegundos / 86400) + ' dias e ' +
    	CONVERT(VARCHAR,(TotalSegundos % 86400)) + ' horas'
    FROM
    (
    	SELECT
    		Nome,
    		DataNascimento,
    		DATEDIFF(SECOND,DataNascimento,@DataAtual) TotalSegundos
    	FROM
    		@Tabela
    ) Agrr

    Resultado:

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Editado Vitor Mendes quarta-feira, 6 de junho de 2012 13:21
    quarta-feira, 6 de junho de 2012 13:21