Em um banco de dados aberto e em condições ideais, uma tabela chamada processo possui os registros abaixo.NumeroProcesso DataAbertura1279678-05.2016.1.00.0001 2016-12-264598765-03.2017.1.90.0002 2017-01-156789764-02.2016.1.80.0003 2016-03-309876534-05.2016.1.00.0000 2016-03-20Ao ser digitado um comando SQL, foi exibido na tela.NumeroProcesso DataAbertura6789764-02.2016.1.80.0003 2016-03-309876534-05.2016.1.00.0000 2016-03-20O comando digitado foi:
ASELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND '2016-03-30';
BSELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura BETWEEN ('2016-03- 01','2016-03-30');
CSELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR DataAbertura<='2016-03-30';
DSELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura IN ('2016-03-20' AND '2016-03-30');
ESELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND DataAbertura<'2016-03-30';
Revelar gabarito e comentário▾
GabaritoA — SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND '2016-03-30';
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”.
SQL – Operador BETWEEN
Gabarito: letra A. O comando que exibe os dois registros com datas de março/2016 é o que utiliza o operador BETWEEN com os limites '2016-03-01' e '2016-03-30', pois ele retorna inclusive as datas limites – ou seja, '2016-03-30' está dentro do intervalo. As demais alternativas apresentam erro de sintaxe, lógica ou uso incorreto de operadores.
A questão testa o conhecimento do operador BETWEEN para filtro de datas no SQL. Conforme a documentação, o BETWEEN inclui os valores de início e fim do intervalo. A tabela fornecida possui quatro registros; o resultado esperado são os dois com data em março/2016.
PEGA ESSA DICA!
Lembre-se de que o BETWEEN é inclusivo (os limites fazem parte do resultado). Além disso, ele deve ser usado com a sintaxe coluna BETWEEN valor1 AND valor2 – sem parênteses, vírgulas ou operadores extras. Na dúvida, compare com a combinação equivalente: coluna >= valor1 AND coluna <= valor2.
Alternativa A — ✅ Correta ⟵ GABARITO
SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND '2016-03-30';
Retorna todos os registros cuja DataAbertura esteja no intervalo de 1º a 30 de março de 2016, ambos inclusive. As datas '2016-03-20' e '2016-03-30' atendem, e as demais ('2016-12-26' e '2017-01-15') ficam de fora. Portanto, a saída corresponde exatamente ao resultado exibido.
Alternativa B — ❌ Incorreta
SELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura BETWEEN ('2016-03- 01','2016-03-30');
A sintaxe do BETWEEN exige a palavra-chave AND entre os dois valores, e não uma vírgula. Além disso, há um espaço indevido na data '2016-03- 01'. A consulta geraria erro de execução.
Alternativa C — ❌ Incorreta
SELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR DataAbertura<='2016-03-30';
O operador OR faz com que a condição seja verdadeira se qualquer uma das partes for satisfeita. Como toda data é maior ou igual a '2016-03-01' OU menor ou igual a '2016-03-30' – na prática, todos os registros da tabela atendem a pelo menos uma condição –, o resultado incluiria as quatro linhas, e não apenas as duas desejadas.
Alternativa D — ❌ Incorreta
SELECT NumeroProcesso, DataAbertura FROM processo WHERE DataAbertura IN ('2016-03-20' AND '2016-03-30');
O operador IN espera uma lista de valores separados por vírgula, e não a palavra AND. A expressão ('2016-03-20' AND '2016-03-30') é inválida em SQL. O correto seria IN ('2016-03-20', '2016-03-30'), mas ainda assim não atenderia ao resultado (pois o resultado inclui uma data intermediária, não apenas as duas extremas). A consulta apresentada gera erro de sintaxe.
Alternativa E — ❌ Incorreta
SELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND DataAbertura<'2016-03-30';
Os operadores > e < são estritos, ou seja, não incluem os limites. Assim, seriam retornados apenas registros com data estritamente entre '2016-03-20' e '2016-03-30'. Como o registro de '2016-03-20' e o de '2016-03-30' são exatamente os limites, eles seriam excluídos do resultado. A consulta não retornaria nenhuma linha, pois não há registro com data intermediária.