Dans Oracle, nous pouvons transformer les dates en nombres et leur appliquer l'arithmétique de différentes manières.
Par exemple sysdate-7
nous donne la date d'il y a sept jours. trunc(some_date)
supprime l'élément de temps d'une colonne de date. Et to_char(some_date, 'SSSSS')
nous donne son élément de temps comme le nombre de secondes depuis minuit. Donc 06:45:00 correspond à 24300 secondes et 18:15:59 correspond à 69359 secondes (veuillez vérifier ces chiffres, car ils figurent au dos d'une enveloppe).
Quoi qu'il en soit, mettre tout cela ensemble dans une seule requête comme celle-ci ...
select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
... produira tous les enregistrements créés la semaine dernière avec un élément de temps dans les heures de base.