Considere a tabela t_audiencias que armazena informações sob...
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
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..3não é uma sintaxe válida para intervalos em MySQL. - D: Utilizar
ORem vez deANDparavara_trabalhoe 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