Fejlen skyldes, at SYSDATE allerede er en dato, der er ingen grund til at bruge TO_DATE()
for at konvertere det til en dato.
Hvis du ikke konverterer det til en dato:
select
24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
Og hvis formateringen af datoerne er forkert, kan du eventuelt bruge to trin som:
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;