Oracle
 sql >> база данни >  >> RDS >> Oracle

Преобразуване на интервала в минути

Това, което ви изглежда ужасно, за мен изглежда напълно приемливо. Ако погледнете документацията към аритметиката, можете да изпълнявате на ИНТЕРВАЛИ:

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

тогава виждате, че можете да ги умножите с числа. Така че, ако умножите интервалите си на 24 и 60, можете да получите броя на минутите, като извлечете броя на дните. По-компактен е, но се съмнявам дали е по-елегантен според вас.

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.

Поздрави,
Роб.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пример за публикуване на Oracle UTL_HTTP с множество части/формуляр (JSON &ZIP).

  2. Идентификаторът ORA-00972 е твърде дълго име на колона с псевдоним

  3. ORA-24408:не можа да генерира уникално име на група сървъри

  4. ORA-01653:не може да се разшири таблицата в пространството за таблици ORA-06512

  5. Предаване на масив от данни като входен параметър към процедура на Oracle