Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL:obtenha registros criados no intervalo de tempo para datas específicas


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.