Questão de Banco de Dados — Oracle — Quadrix 2023
- Código
- qg027188
- Banca
- Quadrix
- Órgão
- CREFITO-7ª Região(BA e SE)
- Ano
- 2023
- Nível
- Superior
- Cargo
- Programador(a)
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). No Oracle, SYSDATE retorna a data e hora atuais do sistema, e a aritmética com datas é nativa: somar um número inteiro a uma data adiciona esse número em dias. Portanto, SELECT SYSDATE + 30 FROM DUAL; é um comando válido que retorna a data atual acrescida de 30 dias — não há erro, pois a unidade padrão da operação aritmética com datas no Oracle é o dia. A afirmação do enunciado está incorreta.
A linguagem SQL, em especial no Oracle, trata datas como um tipo de dado numérico especial. Quando você realiza uma operação aritmética como SYSDATE + 30, o Oracle interpreta o número 30 como uma quantidade de dias a serem adicionados à data. Essa é uma característica fundamental do SGBD Oracle, que permite manipular datas de forma direta e intuitiva. A mesma lógica se aplica à subtração: SYSDATE - 7 retorna a data de 7 dias atrás. Essa capacidade de realizar aritmética com datas é amplamente utilizada em consultas para cálculos de prazos, vencimentos e intervalos.
A confusão que a questão explora é a suposição de que seria necessário especificar a unidade (dia, mês ou ano) para realizar a soma. No entanto, o Oracle não exige essa especificação porque a operação aritmética com datas tem um comportamento padrão bem definido: o número inteiro é sempre interpretado como dias. Para somar meses ou anos, o Oracle oferece funções específicas como ADD_MONTHS, MONTHS_BETWEEN e INTERVAL (com a sintaxe INTERVAL '30' DAY ou INTERVAL '1' MONTH), mas a soma direta com um número inteiro é sempre em dias.
Para ilustrar, considere o seguinte exemplo prático: se a data atual do sistema for 6 de junho de 2023, o comando SELECT SYSDATE + 30 FROM DUAL; retornará 6 de julho de 2023. Isso demonstra que a operação é perfeitamente válida e não gera erro. A banca tenta induzir o candidato a acreditar que seria necessário discriminar a unidade, mas isso é incorreto no contexto do Oracle.
A pegadinha desta questão está em confundir a aritmética de datas do Oracle com a necessidade de especificar unidades. O candidato que não conhece o comportamento padrão do Oracle pode achar que a soma de um número a uma data exigiria uma sintaxe mais complexa, mas a realidade é que a soma direta é em dias. Essa é uma característica que diferencia o Oracle de outros SGBDs e que costuma ser cobrada em provas de banco de dados.
A banca explora a suposição de que a soma de um número a uma data exigiria a especificação da unidade (dia, mês ou ano). No Oracle, a aritmética com datas é direta: SYSDATE + 30 adiciona 30 dias à data atual, sem necessidade de qualquer especificação adicional. Essa é uma característica nativa do SGBD.
A afirmação de que SELECT SYSDATE + 30 FROM DUAL; implicará erro é incorreta. No Oracle, a aritmética com datas é uma funcionalidade nativa: somar um número inteiro a uma data adiciona esse número em dias. Portanto, o comando é válido e retorna a data atual acrescida de 30 dias. A banca tenta confundir o candidato ao sugerir que seria necessário especificar a unidade, mas isso não é verdade no Oracle. A operação SYSDATE + 30 é perfeitamente executável e não gera erro.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg027188