W Oracle można odjąć daty. To da ci różnicę w dniach. Pomnóż przez 24, aby uzyskać godziny itd.
SQL> select oldest - creation from my_table;
Jeśli Twoja data jest przechowywana jako dane znakowe, musisz najpierw przekonwertować ją na typ daty.
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
Uwaga :
Ta odpowiedź dotyczy dat reprezentowanych przez typ danych Oracle DATE
.Oracle ma również typ danych TIMESTAMP
, który może również reprezentować datę (z czasem). Jeśli odejmiesz TIMESTAMP
wartości, otrzymasz INTERVAL
; aby wyodrębnić wartości liczbowe, użyj EXTRACT
funkcja.