No Oracle, podemos transformar datas em números e aplicar aritmética a eles de várias maneiras.
Por exemplo,
sysdate-7
nos dá a data de sete dias atrás. trunc(some_date)
remove o elemento de hora de uma coluna de data. E to_char(some_date, 'SSSSS')
nos dá seu elemento de tempo como o número de segundos desde a meia-noite. Portanto, 06:45:00 são 24300 segundos e 18:15:59 são 69359 segundos (por favor, verifique esses números, pois eles estão no verso de um envelope). De qualquer forma, juntando tudo isso em uma única consulta como esta ...
select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
... produzirá todos os registros criados na última semana com um elemento de tempo dentro das horas principais.