2011-05-04 59 views
7

查询:间隔功能

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 

可有人请向我解释如何查询给这个输出,并提供有关的解释间隔函数?

+1

请参阅:http://askanantha.blogspot.com/2007/08/interval-datatypes-in-oracle.html – 2011-05-04 06:37:02

回答

10

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

详细关于间隔数据类型
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i128552

6

间隔是用于扣除或添加一个函数(天,年,月,小时,分钟和秒)到指定日期。 区间'300'月份:25-0 原因:300/12(月份)给出的商数为25,余数为0,因此输出将为25-0

区间'54 -2'年复一月: 54-2 原因:因为您没有提及它所提供的任何日期。 如果您使用 从双重选择sysdate + interval '54 -2'年复一年; 输出将是:2066年1月12日

sydate:2012年1月10日 因此增加54至12 = 66 并加入2个月至辛这将是分解

和最后一个选项一样。