To, co dla ciebie wygląda okropnie, dla mnie wygląda na całkowicie do przyjęcia. Jeśli spojrzysz na dokumentację dotyczącą arytmetyki, którą możesz wykonać na INTERWAŁACH:
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements001.htm#sthref175
wtedy widzisz, że możesz je pomnożyć za pomocą liczb. Więc jeśli pomnożysz swoje interwały do 24 i 60, możesz uzyskać liczbę minut, wyodrębniając liczbę dni. Jest bardziej kompaktowy, ale wątpię, czy Twoim zdaniem jest bardziej elegancki.
SQL> create table t (my_interval interval day to second)
2 /
Table created.
SQL> insert into t
2 select numtodsinterval(30,'minute') from dual union all
3 select numtodsinterval(4,'hour') from dual
4 /
2 rows created.
SQL> select my_interval
2 , 60 * extract(hour from my_interval)
3 + extract(minute from my_interval) minutes_terrible_way
4 , extract(day from 24*60*my_interval) minutes_other_way
5 from t
6 /
MY_INTERVAL MINUTES_TERRIBLE_WAY MINUTES_OTHER_WAY
------------------------------ -------------------- -----------------
+00 00:30:00.000000 30 30
+00 04:00:00.000000 240 240
2 rows selected.
Pozdrawiam,
Zbój.