W Oracle możemy zamienić daty na liczby i zastosować do nich arytmetykę na różne sposoby.
Na przykład sysdate-7
podaje nam datę sprzed siedmiu dni. trunc(some_date)
usuwa element czasu z kolumny daty. I to_char(some_date, 'SSSSS')
podaje nam swój element czasu jako liczbę sekund od północy. Tak więc 06:45:00 to 24300 sekund, a 18:15:59 to 69359 sekund (proszę sprawdzić te liczby, ponieważ są one z tyłu koperty).
W każdym razie, umieszczając to wszystko razem w jednym zapytaniu, takim jak to ...
select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
... wygeneruje wszystkie rekordy utworzone w ciągu ostatniego tygodnia z elementem czasu w ciągu podstawowych godzin.