查询:
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
有人能向我解释一下这个查询是如何给出这个输出的,并解释一下区间函数吗?
INTERVAL
不是一个函数,它是一个引入区间文字的关键字,表示数据类型。类似于文字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
有关interval数据类型的详细信息:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i128552
Interval是一个函数,用于在给定日期上减去或添加(天、年、月、小时、分钟和秒(。间隔"300"月:25-0原因:300/12(月(给你的商是25,余数是0,所以输出将是25-0
时间间隔"54-2"年到月:54-2原因:因为你没有提到它给出的任何日期。如果您使用从dual中选择sysdate+interval‘54-2’年到月;输出将为:1-12-2066
日期:2012年10月1日所以把54加到12=66并在10月增加2个月,即12月
与最后一个选项相同。