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'