将间隔转换为分钟

时间:2011-02-21 07:07:05

标签: oracle

假设我有2个间隔:

INTERVAL '0 00:30:00' DAY TO SECOND
INTERVAL '0 04:00:00' DAY TO SECOND

在每个间隔中获得分钟数的最优雅方法是什么。 <{1}}和30相应的。{/ p>

是的,我知道我可以表演240,但这对我来说太可怕了。

有更好的解决方案吗?

3 个答案:

答案 0 :(得分:24)

对你来说看起来很可怕,看起来完全可以接受。如果您查看可以在INTERVAL上执行的算术文档:

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 :(得分:1)

(extract(day from my_interval) * 24 + extract(hour from my_interval)) * 60 + extract(minute from my_interval) my_way

不要忘记几天。

答案 2 :(得分:0)

重用上述Rob的示例,

select (sysdate-(sysdate-to_dsinterval(my_interval)))*24*60 from t;