查询:
SELECT INTERVAL '300' month,
INTERVAL '54-2' year to month,
INTERVAL ' 11:12:10.1234567' hour to second
FROM DUAL;
以上查询的输出为:
+25-00,+54-02,+00 11:12:10.1234567
有人可以向我解释这个查询是如何给出这个输出的,还有关于区间函数的解释吗?
答案 0 :(得分:11)
INTERVAL
不是函数,它是引入区间 literal 的关键字,并且表示数据类型。类似于文字DATE '2011-05-04'
或TIMESTAMP '2011-05-04 17:18:19'
正在做的事情。
有关间隔文字的详细信息
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00221
http://docs.oracle.com/cd/E11882_01/server.112/e41084/expressions009.htm#SQLRF52084
有关间隔数据类型的详细信息:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i128552
答案 1 :(得分:8)
间隔是一种功能,用于扣除或添加(天,年,月,小时,分钟和秒)给定日期。 间隔'300'月:25-0 原因:300/12(月)给出商为25,余数为0,因此输出为25-0
间隔'54 -2'年到月:54-2 原因:因为你没有提到任何日期,因为它是。 如果你使用 从dual选择sysdate + interval '54 -2'年份到月份; 输出将是:1-12-2066
sydate:1-10-2012 所以加54到12 = 66 并将oct添加2个月,这将是dec。
与最后一个选项相同。