Was für Sie schrecklich aussieht, sieht für mich vollkommen akzeptabel aus. Wenn Sie sich die Dokumentation der Arithmetik ansehen, die Sie auf INTERVALS ausführen können:
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements001.htm#sthref175
dann siehst du, dass du sie mit Zahlen multiplizieren kannst. Wenn Sie also Ihre Intervalle mit 24 und 60 multiplizieren, erhalten Sie die Anzahl der Minuten, indem Sie die Anzahl der Tage extrahieren. Es ist kompakter, aber ich bezweifle, dass es aus Ihrer Sicht eleganter ist.
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.
Viele Grüße,
Rob.