1
resposta

Resolução do exercício - revisão de empréstimos concedidos em 2023

Boa tarde!

Com alguns detalhes próprios do ambiente Oracle, segue o script da consulta, executado no aplicativo online (https://freesql.com/):

SELECT 
    id_emprestimo,
    DataInicio,
    Tipo,
    Valor
FROM 
    TabelaEmprestimo
WHERE 
    DataInicio BETWEEN TO_DATE('2023/01/01', 'YYYY/DD/MM') AND TO_DATE('2023/01/04', 'YYYY/DD/MM');

O que pode ser questionado nessa prática é o motivo de eu ter utilizado o período consultado entre 1º de janeiro até 1º abril (em vez de 31 de março) nos parâmetros da consulta.
Bem, testei o ambiente e constatei que a data final exclui os registros limites no retorno da consulta.
Em outras palavras, se eu utilizasse o "BETWEEN" com as datas 01/01/2023 e 31/03/2023, a consulta não trazia registros do banco de dados cujo campo "DataInicio" continham valores 31/03/2023, indicando que a melhor solução seria estender a data final para o dia seguinte (01/04/2023), de forma a não deixar de fora do 1º trimestre os registros com data de 31/03/2023.
Lembrando que essa constatação foi verificada no ambiente Oracle, é possível que em outros SGBDs seja diferente.
Ao que parece, isso é apenas uma aparência de não inclusão da data final, uma "pegadinha" do Oracle rsrs, que ocorre em campos do tipo data, que armazenam, além da data, a hora.
Além do contorno utilizado acima, poderiam ser utilizados, alternativamente, os operadores >= e <, algo similar a:

DataInicio >= '01-JAN-2023' AND DataInicio < '01-ABR-2023'
1 resposta

Olá, como vai?

Agradeço por compartilhar seus aprendizados com a comunidade Alura.

Gostei da sua análise sobre o comportamento do campo de data no Oracle. Sua explicação sobre o fato de o tipo DATE armazenar data e hora ajuda bastante a entender por que registros do dia 31/03/2023 podem não aparecer quando o limite final não considera o horário. Esse tipo de observação mostra um olhar atento para como os SGBDs tratam dados de data e tempo. Com certeza poderá ajudar alunos que trabalham com esse ambiente!

Continue explorando esses testes no banco de dados, pois esse tipo de investigação fortalece muito o aprendizado em SQL. ✨

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!