select to_char(Val,'yyyy/mm/dd') as Val,
extract(day from NumToDsInterval(sysdate-Val,'day')) as 日,
extract(hour from NumToDsInterval(sysdate-Val,'day')) as 時間,
extract(minute from NumToDsInterval(sysdate-Val,'day')) as 分,
extract(second from NumToDsInterval(sysdate-Val,'day')) as 秒
from (select to_date('1582/06/01 08:30:20','yyyy/mm/dd hh24:mi:ss') as Val from dual
union select to_date('2000/01/01 19:30:40','yyyy/mm/dd hh24:mi:ss') from dual
union select to_date('2005/08/01 10:30:50','yyyy/mm/dd hh24:mi:ss') from dual);
--■■■低精度なので誤差が発生することがあります■■■
select
extract(minute from NumToDsInterval(
to_date('2005/08/01 23:16:00','yyyy/mm/dd hh24:mi:ss') -
to_date('2005/08/01 23:00:00','yyyy/mm/dd hh24:mi:ss'),'day')) as 分
from dual;