Analista de Sistemas – Administrador de Banco de Dados
Um Administrador de Banco de Dados deseja obter o número de dias entre as datas '2014-11-21' e '2015-01-16' e exibir esse resultado com o rótulo de coluna dias. A instrução que deve ser utilizada no Oracle 10g e no PostgreSQL 8 são, respectivamente,
ASELECT to_date('2015-01-16') - to_date('2014-11-21') AS dias FROM sys.dual;SELECT date('2015-01-16') - date('2014-11-21') AS dias;
BSELECT to_date('2015-01-16') - to_date('2014-11-21') AS dias FROM sys.dual;SELECT get_date('2015-01-16') - get_date('2014-11-21') AS dias;
CSELECT date('2015-01-16') - date('2014-11-21') AS dias FROM date.sys;SELECT date('2015-01-16') - date('2014-11-21') AS dias;
DSELECT to_date('2015-01-16') - to_date('2014-11-21') AS dias FROM sys.dual;SELECT subtract_date('2015-01-16' - '2014-11-21') AS dias;
ESELECT date('2015-01-16') - date('2014-11-21') AS dias FROM sys.dual;SELECT get_date('2015-01-16') – get_date('2014-11-21') AS dias;
Revelar gabarito e comentário▾
GabaritoA — SELECT to_date('2015-01-16') - to_date('2014-11-21') AS dias FROM sys.dual;
SELECT date('2015-01-16') - date('2014-11-21') AS dias;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Cálculo de diferença de datas no Oracle e PostgreSQL
Gabarito: letra A. A diferença entre duas datas no Oracle 10g é obtida subtraindo valores do tipo DATE (convertidos com to_date), sendo obrigatório o uso da pseudotabela sys.dual para a instrução SELECT. No PostgreSQL 8, a subtração direta entre dois valores date retorna um inteiro representando o número de dias, e a função date('string') converte a string para o tipo date. A alternativa A reproduz exatamente essa sintaxe para cada SGBD.
A banca testa o conhecimento das funções de conversão e da obrigatoriedade do FROM no Oracle versus a sintaxe simplificada do PostgreSQL.
1Oracle: to_date + sys.dual
2PostgreSQL: date() direto
3Subtração retorna dias
4Rótulo AS dias
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A instrução Oracle usa to_date para converter as strings e subtrai os valores, finalizando com FROM sys.dual. A instrução PostgreSQL usa date('...') e subtrai diretamente, dispensando FROM (embora FROM seja opcional se não houver tabela, mas a alternativa omite corretamente). O resultado é o número de dias, com o rótulo dias.
Alternativa B — ❌ Incorreta
A parte do Oracle está correta, mas no PostgreSQL é usada a função get_date(), que não existe no PostgreSQL 8. A função correta é date() ou a simples subtração de valores date.
Alternativa C — ❌ Incorreta
No Oracle, a tabela date.sysnão existe; o correto é sys.dual. A parte do PostgreSQL está correta, mas o erro no Oracle invalida a alternativa.
Alternativa D — ❌ Incorreta
A parte do Oracle está correta, mas no PostgreSQL é usada a função subtract_date() com sintaxe incorreta ('2015-01-16' - '2014-11-21' dentro dos parênteses). Não existe essa função no PostgreSQL 8.
Alternativa E — ❌ Incorreta
No Oracle, date(...) não é uma função válida para conversão de string; o correto é to_date(...). Além disso, a tabela sys.dual está correta, mas a função Oracle está errada. No PostgreSQL, usa-se get_date() que não existe (idêntico ao erro da B).
NÃO CAIA NESSA!
O candidato pode confundir a necessidade do FROM sys.dual no Oracle com o PostgreSQL, que não exige tabela. Além disso, funções fictícias como get_date() e subtract_date() são distratores comuns. Lembre-se: no Oracle, sempre use to_date e dual; no PostgreSQL, use date ou subtração direta. Com treino, você reconhece essas variações de sintaxe.