oracle中的interval函数

时间:2011-05-04 06:31:55

标签: sql oracle

查询:

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

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

2 个答案:

答案 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。

与最后一个选项相同。