Lỗi là do SYSDATE đã là một ngày, không cần sử dụng TO_DATE()
để chuyển nó thành ngày tháng.
Nếu bạn không chuyển đổi nó thành một ngày:
select
24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
Và nếu định dạng ngày sai, bạn có thể sử dụng hai bước như:
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;