none
Consulta com DATEDIFF RRS feed

  • Pergunta

  • Como é a maneira correta de para esta consulta?

    SELECT count(*) FROM empresa.funcionario where DATEDIFF (year, dt_admissao, dt_nasc) < 20;

    segunda-feira, 21 de setembro de 2020 12:18

Todas as Respostas

  • Bom dia,

    Não entendi o que você quer fazer, mas da forma como você deixou a função vai retornar a quantidade de anos entre a data de admissão (data inicial) e a data de nascimento (data final), então o resultado vai ser sempre negativo porque acredito que a data de nascimento seja sempre menor que a data de admissão.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 21 de setembro de 2020 12:30
  • O intuído é obter a quantidade de funcionários que, na data de admissão, tinham idade menor que vinte anos.
    segunda-feira, 21 de setembro de 2020 20:20
  • Você teria que inicialmente inverter os parâmetros da função DateDiff:

    where DATEDIFF(year, dt_nasc, dt_admissao) < 20


    Mas a função DateDiff não leva em consideração o mes e o ano das datas no calculo da diferença, então segue sugestão para complementar o calculo:

     
    where
        datediff(year, dt_nasc, dt_admissao) -
        case when 
            month(dt_admissao) * 100 + day(dt_admissao) >
            month(dt_nasc) * 100 + day(dt_nasc)
            then 0
            else 1
        end < 20

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 21 de setembro de 2020 20:49
  • Passei a utilizar a base do Covid (SRAG).  Estou com dificuldade e juntar o seu exemplo, com resto da consulta.

    SELECT * FROM covid.influid14092020 where ID_MUNICIP like 'Bauru' and 
    where
        datediff(year, DT_NASC, DT_NOTIFIC) -
        case when 
            month(DT_NOTIFIC) * 100 + day(DT_NOTIFIC) >
            month(DT_NASC) * 100 + day(DT_NASC)
            then 0
            else 1
        end < 20;  

    terça-feira, 22 de setembro de 2020 00:02
  • Na sua consulta está sobrando um Where, e aproveitando vou fazer uma pequena retificação, alterando o ">" para ">=":

    SELECT * FROM covid.influid14092020 
    where 
        ID_MUNICIP like 'Bauru' and 
        datediff(year, DT_NASC, DT_NOTIFIC) -
        case when 
            month(DT_NOTIFIC) * 100 + day(DT_NOTIFIC) >=
            month(DT_NASC) * 100 + day(DT_NASC)
            then 0
            else 1
        end < 20;  

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 22 de setembro de 2020 12:43