Oracle
 sql >> Base de données >  >> RDS >> Oracle

Convertir un intervalle en minutes

Ce qui vous semble terrible, me semble parfaitement acceptable. Si vous regardez la documentation sur l'arithmétique que vous pouvez effectuer sur les INTERVALLES :

http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements001.htm#sthref175

alors vous voyez que vous pouvez les multiplier avec des nombres. Ainsi, si vous multipliez vos intervalles par 24 et 60, vous pouvez obtenir le nombre de minutes en extrayant le nombre de jours. C'est plus compact, mais je doute que ce soit plus élégant à votre avis.

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.

Cordialement,
Rob.