假设我有2个间隔:
INTERVAL '0 00:30:00' DAY TO SECOND
INTERVAL '0 04:00:00' DAY TO SECOND
在每个间隔中获得分钟数的最优雅方法是什么。 <{1}}和30
相应的。{/ p>
是的,我知道我可以表演240
,但这对我来说太可怕了。
有更好的解决方案吗?
答案 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;