none
Calculo com datas SQL

    Question

  • Olá amigos,

     

    estou neste situaçã oapra gerar um relatorio...

    tenho que retornar do banco a quantidade de anos e meses que um funcionario tem na empresa.

    atualmente consegui retornar a quantidade de meses .

    Tipo se eu colocar um "/12" ele me da em anos no caso, mas tipo exemplo:

    funcionario que entrou 2004-12-01 e até hoje então tem 2 anos e 3 meses. eu só consigo retornar no caso 3 anos ou 27 meses .

     

    ae n ocaso quando eu divido os meses fica 2 anos apenas e não tenho os 3 meses..

     

    como posso resolver isso ?

    SELECT DATEDIFF(MONTH,dataadmissao,GETDATE()) / 12 AS ANO, DATEDIFF(MONTH,dataadmissao,GETDATE()) AS MESES_TOTAL from pfunc WHERE chapa = '02.311.014'

     

    A SQL que estou usando..

     

    Obrigado pela atenção...

     

    Luiz Anderson

     

    Friday, March 09, 2007 12:44 PM

Answers

  • veja se ajuda.

     


    Declare @Data DateTime
    Set @Data = '2004-12-01'

    Select Case When Dateadd(Year,DateDiff(Year,@Data,Getdate()),@Data) <= Getdate() Then DateDiff(Year,@Data,Getdate()) Else
     DateDiff(Year,@Data,Getdate()) -1 End as Anos,
     Case When DateDiff(Month,@Data,getdate())%12 = 0 Then DateDiff(Month,@Data,getdate())/12 Else DateDiff(Month,@Data,getdate())/12+1 End

     

    depois e so fazer uma funcao para isso,. qualquer coisa retorne.;

    Friday, March 09, 2007 12:58 PM
    Moderator

All replies

  • veja se ajuda.

     


    Declare @Data DateTime
    Set @Data = '2004-12-01'

    Select Case When Dateadd(Year,DateDiff(Year,@Data,Getdate()),@Data) <= Getdate() Then DateDiff(Year,@Data,Getdate()) Else
     DateDiff(Year,@Data,Getdate()) -1 End as Anos,
     Case When DateDiff(Month,@Data,getdate())%12 = 0 Then DateDiff(Month,@Data,getdate())/12 Else DateDiff(Month,@Data,getdate())/12+1 End

     

    depois e so fazer uma funcao para isso,. qualquer coisa retorne.;

    Friday, March 09, 2007 12:58 PM
    Moderator
  • Bom dia Xará, dá uma olhada neste exemplo:

     

    Declare @DataAdmissao datetime
    set @DataAdmissao = getdate() - 740

    SELECT DATEDIFF(YEAR,@dataadmissao,GETDATE()) Anos,
           Meses = (DATEDIFF(MONTH,@dataadmissao,GETDATE()) - (DATEDIFF(YEAR,@dataadmissao,GETDATE()) *12))

     

    Espero ter ajudado

    Friday, March 09, 2007 1:02 PM
  • Obrigado, perfeito .. ehehe aepsar de não er entendido bem, entendi as condições com case mas por falta de conhecimento no GetDate, DataDiff e Dateadd mas rodou legal...

     

    Muito obrigado !

    Friday, March 09, 2007 1:13 PM