Puedes restar fechas en Oracle. Esto te dará la diferencia en días. Multiplica por 24 para obtener horas, y así sucesivamente.
SQL> select oldest - creation from my_table;
Si tu fecha está almacenada como datos de caracteres, primero debes convertirla a un tipo de dato fecha.
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
Nota:
Esta respuesta se aplica a fechas representadas por el tipo de datos de Oracle DATE
. Oracle también tiene un tipo de datos TIMESTAMP
, que también puede representar una fecha (con hora). Si restas valores de tipo TIMESTAMP
, obtendrás un INTERVALO
; para extraer valores numéricos, utiliza la función EXTRACT
.