Você pode subtrair datas no Oracle. Isso lhe dará a diferença em dias. Multiplique por 24 para obter horas e assim por diante.
SQL> select oldest - creation from my_table;
Se a sua data for armazenada como dados de caracteres, você deverá convertê-la primeiro em um tipo de data.
SQL> select 24 * (to_date('2009-07-07 22:00', 'YYYY-MM-DD hh24:mi')
- to_date('2009-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_hours
from dual;
DIFF_HOURS
----------
2.5
Observação :
Esta resposta se aplica a datas representadas pelo tipo de dados Oracle
DATE
.Oracle também tem um tipo de dados TIMESTAMP
, que também pode representar uma data (com hora). Se você subtrair TIMESTAMP
valores, você obtém um INTERVAL
; para extrair valores numéricos, use o EXTRACT
função.