È possibile sottrarre date in Oracle. Questo ti darà la differenza in giorni. Moltiplicare per 24 per ottenere ore e così via.
SQL> select oldest - creation from my_table;
Se la data è memorizzata come dati carattere, è necessario prima convertirla in un tipo di 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
Nota:
Questa risposta si applica alle date rappresentate dal tipo di dati Oracle DATE
. Oracle ha anche un tipo di dati TIMESTAMP
, che può anche rappresentare una data (con orario). Se si sottrae i valori TIMESTAMP
, si ottiene INTERVAL
; per estrarre valori numerici, utilizzare la funzione EXTRACT
.
Quasi duplicati: http://stackoverflow.com/questions/9322935/subtracting-dates-in-oracle-number-or-interval-datatype –