Questão nº 38

Questão de Tecnologia da Informação · FCC TRT-1 2025 (nº 38)

FCC2025Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

Considere o seguinte trecho de código em PL/SQL:

```sql
SELECT nome, FLOOR(MONTHS_BETWEEN(SYSDATE, data_admissao) / 12) AS anos_servico,
MOD(MONTHS_BETWEEN(SYSDATE, data_admissao), 12) AS meses_servico
FROM funcionarios
WHERE status = 'Ativo';
```

Ao ser executado em condições ideais, este comando

Resposta comentada

Gabarito Alternativa D

Para calcular o tempo de serviço em anos e meses, primeiro encontramos a diferença total de meses entre as duas datas. Depois, usamos a divisão inteira (FLOOR) para obter os anos completos e o resto da divisão (MOD) para encontrar os meses restantes.

  • (A) Incorreta: EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM data_admissao) calcula apenas a diferença entre os números dos anos, ignorando completamente os meses e dias. Por exemplo, um funcionário admitido em 31/12/2020 e a data atual sendo 01/01/2023 resultaria em 3 anos, o que está incorreto para apenas um dia de serviço. Essa é uma armadilha comum que não considera a precisão necessária para tempo de serviço.
  • (B) Incorreta: A função DATEDIFF não é padrão no PL/SQL do Oracle. Além disso, mesmo em sistemas onde existe, DATEDIFF(YEAR, ...) geralmente sofre do mesmo problema de precisão da alternativa A, apenas subtraindo os números dos anos.
  • (C) Incorreta: O comando não calcula o tempo de serviço somando diretamente os meses. Ele utiliza explicitamente a divisão (/ 12) e a modulação (MOD) para converter o total de meses em anos e meses, como pode ser visto no código.
  • (D) Correta: O comando calcula a diferença total de meses entre a data atual (SYSDATE) e a data de admissão (data_admissao) usando MONTHS_BETWEEN. Em seguida, FLOOR(MONTHS_BETWEEN(...) / 12) obtém o número de anos completos (a parte inteira da divisão), e MOD(MONTHS_BETWEEN(...), 12) obtém o número de meses restantes após os anos completos terem sido calculados. Isso fornece uma representação precisa do tempo de serviço em anos e meses.
  • (E) Incorreta: Usar apenas ROUND(MONTHS_BETWEEN(...) / 12) arredondaria o total de anos, perdendo a informação detalhada dos meses restantes. Por exemplo, 11.5 meses de serviço seriam arredondados para 1 ano, sem indicar os meses. O objetivo é mostrar anos e meses separadamente, o que ROUND não faz.

Fonte: FCC TRT-1 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 004). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho