Considere a tabela t_audiencias que armazena informações sob...

Próximas questões
Com base no mesmo assunto
Q3290561 Banco de Dados

Considere a tabela t_audiencias que armazena informações sobre audiências marcadas. 




Considerando que esta tabela está criada e contém valores adequados, em um banco de dados MySQL aberto e funcionando em condições ideais, 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 0u 3, é:

SELECT * FROM t_audiencias WHERE status = 'Pendente' AND  

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - data_audiencia > NOW() AND vara_trabalho IN (1, 2, 3);

A questão testa o conhecimento sobre consultas SQL em um banco de dados MySQL, focando em como filtrar registros com base em condições específicas, como datas e valores de um campo categórico.

Para resolver este tipo de questão, é essencial entender funções de data e hora do MySQL e operações de comparação e filtragem. Vamos explorar esses conceitos:

1. Funções de Data e Hora: A função NOW() é usada em MySQL para obter a data e hora atuais no formato de data e hora, o que é apropriado para comparações com campos de data e hora. CURRENT_DATE_TIME() não é uma função válida em MySQL, e SYSDATE() tem um comportamento similar ao NOW() mas é menos comum em comparações simples.

2. Operadores de Comparação: Utilizamos o operador > para comparar datas, garantindo que apenas as audiências com datas no futuro sejam selecionadas.

3. Filtragem de Registros: Usamos IN para verificar se o valor de vara_trabalho está entre um conjunto de valores específicos, neste caso, 1, 2 ou 3. Isso é mais eficiente e legível do que múltiplos OR.

Justificativa para a alternativa B: Esta alternativa utiliza NOW() para comparar corretamente a data e hora atuais com data_audiencia e usa IN (1, 2, 3) para verificar se vara_trabalho está dentro do intervalo desejado. Ambas as condições são necessárias para filtrar corretamente as audiências "pendentes".

Análise das alternativas incorretas:

  • A: CURRENT_DATE_TIME() não é uma função válida em MySQL, tornando a alternativa inválida.
  • C: SYSDATE() é menos comum para simples comparações de data e BETWEEN 1..3 não é uma sintaxe válida para intervalos em MySQL.
  • D: Utilizar OR em vez de AND para vara_trabalho e datas resultaria em uma lógica errada, pois selecionaria audiências em que qualquer uma das condições é verdadeira, não ambas.
  • E: CURDATE() obtém apenas a data sem a hora, o que pode não ser suficiente para registros que precisam considerar também o tempo. Além disso, IN (1..3) é uma sintaxe incorreta.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

data_audiencia > NOW() AND vara_trabalho IN (1, 2, 3);  

SELECT * FROM t_audiencias

WHERE status = 'Pendente'

 AND data_audiencia > NOW()

 AND vara_trabalho IN (1, 2, 3);

  • : filtra audiências pendentes.
  • : compara a data/hora atual com o campo (usando que retorna data e hora no MySQL).
  • : filtra apenas as varas de trabalho 1, 2 ou 3.
  • A: não existe no MySQL.
  • C: está com sintaxe inválida. Correto seria .
  • D: uso de em vez de pode incluir registros fora do esperado (por exemplo, se só a vara for 1, mesmo com data antiga).
  • E: retorna apenas a data, sem considerar a hora — logo, não serve se o campo for .

Padrão SQL: CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP.

Oracle: SYSDATE, SYSTIMESTAMP.

PostgreSQL: NOW(), CURRENT_TIMESTAMP().

MySQL: NOW(), SYSDATE().

SQL Server: GETDATE(), SYSDATETIME().

DB2: CURRENT TIMESTAMP.

só de saber que o NOW ( ) pega o dia e horas atuais, já eliminava três alternativas

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo