Questão FC372905
Para saber o tempo de serviço de cada funcionário da sua equipe, um Analista de Sistemas deseja utilizar, em um banco de dados Oracle aberto e em condições ideais, um comando PL/SQ
Linguagem SQL
FCC · 2018
Para saber o tempo de serviço de cada funcionário da sua equipe, um Analista de Sistemas deseja utilizar, em um banco de dados Oracle aberto e em condições ideais, um comando PL/SQL para exibir o nome do funcionário (campo nome) e calcular o número de meses entre a data atual e a data em que o funcionário foi admitido (campo data_admissao), arredondando o número de meses para o valor inteiro mais próximo. Considerando que a tabela onde estão os dados chama-se funcionario, terá que utilizar o comando
- SELECT nome, ROUND(MONTHS_BETWEEN(DATE(), data_admissao)) FROM funcionario;
- SELECT nome, LPAD(MONTHS(SYSDATE,data_admissao)) FROM funcionario;
- SELECT nome, ROUND(MONTHS(DATE(),data_admissao)) FROM funcionario;
- SELECT nome, ROUND(SYSDATE() - data_admissao) FROM funcionario;
- SELECT nome, ROUND(MONTHS_BETWEEN(SYSDATE,data_admissao)) FROM funcionario;
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A alternativa correta usa corretamente as três funções necessárias: SYSDATE (data atual do banco), MONTHS_BETWEEN (diferença em meses entre duas datas) e ROUND (arredondamento ao inteiro mais próximo).
O trecho MONTHS_BETWEEN(SYSDATE, data_admissao) calcula o número de meses (pode ser fracionário) entre a data atual e a admissão. Note que a ordem dos argumentos é (data mais recente, data mais antiga), garantindo resultado positivo para funcionários admitidos no passado.
Em seguida, ROUND(...) converte esse valor fracionário para o inteiro mais próximo, conforme pedido (meses arredondados). Assim, a consulta completa é:
SELECT nome, ROUND(MONTHS_BETWEEN(SYSDATE,data_admissao)) FROM funcionario;
O retorno é o nome do funcionário e o tempo de serviço em meses, arredondado para o inteiro mais próximo.
Conteúdo do catálogo FC Concursos · Atualizado em