假设我有两个间隔:
INTERVAL '0 00:30:00' DAY TO SECOND INTERVAL '0 04:00:00' DAY TO SECOND
什么是最优雅的方式来获取每个时间间隔的分钟数. 30和240.
是的,我知道我可以执行EXTRACT(从间隔小时)* 60 EXTRACT(从间隔分钟),但这对我来说看起来很糟糕.
任何更好的解决方案?
对你来说看起来很糟糕,看起来完全可以接受.如果您查看算术中的文档,可以在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.
问候,抢.