Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2025

Banco de DadosConsultas 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
  1. Adata_audiencia > CURRENT_DATE_TIME ( ) AND vara_trabalho IN (1, 2, 3);
  2. Bdata_audiencia > NOW ( ) AND vara_trabalho IN (1, 2, 3);
  3. Cdata_audiencia > SYSDATE ( ) AND vara_trabalho BETWEEN 1 .. 3;
  4. Ddata_audiencia > NOW ( ) OR vara_trabalho = 1 OR vara_trabalho = 2 OR vara_trabalho = 3;
  5. 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 💪.

  1. 1status = 'Pendente'
  2. 2data > NOW()
  3. 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).

Gabarito: letra B

Link permanente: /questoes/fc150345