Questão nº 36
Questão de Tecnologia da Informação · FCC TRE-PR 2017 (nº 36)
FCC2017Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de SistemasTecnologia da Informação
Gabarito: Aver comentário ↓
Em um banco de dados aberto e em condições ideais, uma tabela chamada processo possui os registros abaixo.

Ao ser digitado um comando SQL, foi exibido na tela.

O comando digitado foi:
- A`SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND '2016-03-30';` (alternativa correta)
- B`SELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura BETWEEN ('2016-03-01','2016-03-30');`
- C`SELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR DataAbertura<='2016-03-30';`
- D`SELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura IN ('2016-03-20' AND '2016-03-30');`
- E`SELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND DataAbertura<'2016-03-30';`
Resposta comentada
Gabarito Alternativa A
A cláusula BETWEEN em SQL é usada para selecionar valores que estão dentro de um intervalo específico, incluindo os valores de início e fim do intervalo.
- (A) Correta: O comando
SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND '2016-03-30';seleciona todas as colunas (*) da tabelaprocessoonde a colunaDataAberturaestá entre '2016-03-01' e '2016-03-30', incluindo ambas as datas. Isso corresponde exatamente aos registros exibidos na tela. - (B) Incorreta: A sintaxe para a cláusula
BETWEENéBETWEEN valor1 AND valor2, e nãoBETWEEN (valor1, valor2). O uso de parênteses para agrupar os valores é um erro de sintaxe. - (C) Incorreta: O comando
SELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR DataAbertura<='2016-03-30';usaria o operador lógicoOR. Isso faria com que todos os registros fossem retornados, pois qualquer data será maior ou igual a '2016-03-01' OU menor ou igual a '2016-03-30'. Para definir um intervalo, o correto seria usarANDem vez deOR. Armadilha: O uso incorreto deORem vez deANDpara delimitar um intervalo é um erro comum que expande o resultado para além do esperado. - (D) Incorreta: A cláusula
INé usada para verificar se um valor corresponde a qualquer valor em uma lista de valores explícitos (ex:IN ('valor1', 'valor2')). A sintaxeIN ('2016-03-20' AND '2016-03-30')está incorreta, poisANDé um operador lógico e não um separador de lista paraIN. Mesmo que a sintaxe fosseIN ('2016-03-20', '2016-03-30'), ele selecionaria apenas os processos com essas duas datas específicas, não o intervalo completo. - (E) Incorreta: O comando
SELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND DataAbertura<'2016-03-30';usa operadores de comparação estritos (>e<), o que significa que as datas '2016-03-20' e '2016-03-30' seriam excluídas do resultado. Além disso, o intervalo de datas especificado ('2016-03-21' até '2016-03-29') não corresponde ao resultado esperado, que começa em '2016-03-01' e inclui as datas limites.
Fonte: FCC TRE-PR 2017 Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.