Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2025
Banco de Dados›Consultas e Comandos em SQL
Código
fc150345
Banca
FCC
Órgão
TRT 15
Ano
2025
Cargo
AJ TRT15
Considere a tabela t_audiencias que armazena informações sobre audiências marcadas. CREATE TABLE t audiencias ( id_audiencia INT PRIMARY KEY, numero processo VARCHAR (50) NOT NULL, data audiencia DATETIME NOT NULL, status VARCHAR (20) NOT NULL, vara trabalho INT NOT NULL ); Considerando que esta tabela está criada e contém valores adequados, em um banco de dados MySQL aberto e funcionando em condições ideias, o comando que seleciona todas as audiências que estão marcadas como "Pendente", cuja data de audiência seja posterior ao dia e hora atuais e que pertençam às varas de trabalho 1, 2 ou 3, é: SELECT * FROM t_audiencias WHERE status = 'Pendente' AND
Adata_audiencia > CURRENT_DATE_TIME ( ) AND vara_trabalho IN (1, 2, 3);
Bdata_audiencia > NOW ( ) AND vara_trabalho IN (1, 2, 3);
Cdata_audiencia > SYSDATE ( ) AND vara_trabalho BETWEEN 1 .. 3;
Ddata_audiencia > NOW ( ) OR vara_trabalho = 1 OR vara_trabalho = 2 OR vara_trabalho = 3;
Edata_audiencia > CURDATE ( ) AND vara_trabalho IN (1 . . 3);
Revelar gabarito e comentário▾
GabaritoB — data_audiencia > NOW ( ) AND vara_trabalho IN (1, 2, 3);
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: funções de data e hora no MySQL
Gabarito: letra B. No MySQL, a função NOW() retorna a data e a hora atuais, sendo a forma correta de comparar com uma coluna DATETIME para selecionar registros futuros. A alternativa B combina data_audiencia > NOW() com vara_trabalho IN (1, 2, 3), atendendo exatamente aos três critérios do enunciado: status 'Pendente', data posterior ao momento atual e vara de trabalho 1, 2 ou 3.
A questão testa o conhecimento das funções de data e hora específicas do MySQL e a sintaxe correta dos operadores de comparação e de conjunto. Vamos entender cada elemento:
1. A coluna data_audiencia é do tipo DATETIME. Isso significa que ela armazena tanto a data quanto a hora. Para comparar com o "dia e hora atuais", precisamos de uma função que retorne ambos os componentes. A função NOW() faz exatamente isso: retorna a data e a hora atuais no formato YYYY-MM-DD HH:MM:SS.
2. O operador IN é a forma correta de verificar se um valor pertence a um conjunto específico. A sintaxe vara_trabalho IN (1, 2, 3) é equivalente a vara_trabalho = 1 OR vara_trabalho = 2 OR vara_trabalho = 3, mas é mais concisa e legível. O operador BETWEEN também poderia ser usado, mas a sintaxe correta é BETWEEN 1 AND 3, não BETWEEN 1 .. 3.
3. A lógica do WHERE exige que todas as condições sejam verdadeiras simultaneamente. O enunciado pede audiências que sejam "Pendente" E cuja data seja posterior ao momento atual E que pertençam às varas 1, 2 ou 3. Portanto, as condições devem ser unidas com AND, não com OR.
4. A diferença entre NOW(), CURDATE() e SYSDATE():CURDATE() retorna apenas a data atual (sem hora), o que não atende ao requisito de comparar com "dia e hora atuais". SYSDATE() é uma função do Oracle, não do MySQL (embora o MySQL também a suporte, ela não é a função padrão para esse fim). NOW() é a função correta no MySQL para obter data e hora atuais.
5. A pegadinha da banca: A banca explora a confusão entre NOW(), CURDATE() e SYSDATE(), e também entre os operadores IN, BETWEEN e OR. O candidato que não domina as funções de data/hora do MySQL pode cair na alternativa A (que usa CURRENT_DATE_TIME(), função inexistente) ou na alternativa C (que usa SYSDATE() e BETWEEN 1 .. 3, sintaxe incorreta).
NÃO CAIA NESSA!
A banca adora trocar as funções de data/hora e os operadores de conjunto. Aqui, a alternativa A usa CURRENT_DATE_TIME() (função que não existe no MySQL), a C usa SYSDATE() (função do Oracle) e BETWEEN 1 .. 3 (sintaxe inválida), e a E usa CURDATE() (que retorna apenas a data, sem hora). A alternativa D usa OR em vez de AND, o que quebraria a lógica do filtro. Com treino, você identifica essas trocas de longe 💪.
1status = 'Pendente'
2data > NOW()
3vara IN (1, 2, 3)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A função CURRENT_DATE_TIME() não existe no MySQL. As funções corretas para obter data e hora atuais são NOW() e SYSDATE(). Além disso, a sintaxe vara_trabalho IN (1, 2, 3) está correta, mas a função inválida torna o comando inteiro incorreto.
Alternativa B — ✅ Correta ⟵ GABARITO
A alternativa B usa NOW(), que retorna a data e a hora atuais, e vara_trabalho IN (1, 2, 3), que verifica se a vara pertence ao conjunto {1, 2, 3}. Todas as condições são unidas com AND, atendendo exatamente aos três critérios do enunciado: status 'Pendente', data posterior ao momento atual e vara de trabalho 1, 2 ou 3.
Alternativa C — ❌ Incorreta
A alternativa C usa SYSDATE(), que é uma função do Oracle, não do MySQL. Além disso, a sintaxe BETWEEN 1 .. 3 está incorreta; o correto seria BETWEEN 1 AND 3. A função SYSDATE() no MySQL também retorna data e hora, mas a banca considera NOW() como a função padrão para esse fim.
Alternativa D — ❌ Incorreta
A alternativa D usa OR em vez de AND para unir as condições. Isso faria com que a consulta retornasse audiências que são "Pendente" OU que têm data posterior ao momento atual OU que pertencem às varas 1, 2 ou 3, o que não atende ao enunciado, que exige que todas as condições sejam verdadeiras simultaneamente.
Alternativa E — ❌ Incorreta
A alternativa E usa CURDATE(), que retorna apenas a data atual (sem hora). Como a coluna data_audiencia é do tipo DATETIME, a comparação data_audiencia > CURDATE() não consideraria a hora, podendo retornar registros do dia atual que já passaram. Além disso, a sintaxe IN (1 . . 3) está incorreta; o correto seria IN (1, 2, 3).