Der Fehler liegt daran, dass SYSDATE bereits ein Datum ist und TO_DATE()
nicht verwendet werden muss um es in ein Datum umzuwandeln.
Wenn Sie es nicht in ein Datum umwandeln:
select
24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
Und wenn die Formatierung der Daten falsch ist, können Sie zwei Schritte verwenden wie:
select
24 * (to_date(to_char(sysdate, 'YYYY-MM-DD hh24:mi'), 'YYYY-MM-DD hh24:mi') - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;