oracle中的interval函数

Aaa*_*aaa 9 sql oracle

查询:

SELECT INTERVAL '300' month,
       INTERVAL '54-2' year to month,
       INTERVAL ' 11:12:10.1234567' hour to second 
  FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

上述查询的输出是:

+25-00,+54-02,+00 11:12:10.1234567
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下这个查询是如何给出这个输出的,有关间隔函数的解释吗?

a_h*_*ame 11

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


Ras*_*our 8

间隔是一种功能,用于扣除或添加(天,年,月,小时,分钟和秒)给定日期.间隔'300'月:25-0原因:300/12(月)给你的商为25,余数为0,所以输出为25-0

间隔'54 -2'每年:54-2原因:因为你没有提到任何日期,因为它是.如果你使用select sysdate + interval '54 -2'来自dual的月份; 输出将是:1-12-2066

sydate:1-10-2012所以加上54到12 = 66并且加上2个月到oct将是dec.

与最后一个选项相同.