Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL :obtenir des enregistrements créés dans une plage de temps pour des dates spécifiques

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.