語法:INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]
該數據類型常用來表示一段時間差, 注意時間差只精確到年和月. precision為年或月的精確域, 有效范圍是0到9, 默認值為2.
用法:interval 得到的是一個時間間隔,是一種數據類型,可以直接與日期進行計算;
eg> select sysdate - (interval '1' year) from dual; (當前時間的前一年)
1,Interval '11' year(n)
-- 輸出結果為:+11-00 (表示11年0個月)
n為年的精度,默認值為2,'integer' 中的integer位數不能大於n
2,interval '20' month(n)
-- 輸出結果為:+01-08(1年8個月)
n仍為年的精度,integer的值不能使輸出結果溢出(如:n=2輸出結果最大值為:+99-11,所以integer值不能大於1199(=99*12+11) )
3,interval '99-11' year(n) to month
-- 輸出結果為:+99-11
此處的格式必須是‘integer-integer’
4,interval '99' day(n)
-- 輸出結果為:+99 00:00:00(99天0小時)
n為天的精度,默認值為2
5,interval '90000' second(n)
-- 輸出結果為:+01 01:00:00.000000(1天零1小時)
n為秒的精度(小數點后的位數),默認值為6
6,interval '2 1:03:1' day(1) to second(3)
-- 輸出結果為:+2 01:03:01.000
同類型的函數:NUMTODSINTERVAL/NUMTOYMINTERVAL
1,NUMTODSINTERVAL(n, 'interval_unit')
將n轉換成interval_unit所指定的值, interval_unit可以為: DAY, HOUR, MINUTE, SECOND
注意該函數不可以轉換成YEAR和MONTH的.
eg> select numtodsinterval(100, 'HOUR') from dual;
-- 結果為:+000000004 04:00:00.000000000
2,NUMTOYMINTERVAL(n, 'interval_unit')
將n轉換成interval_unit所指定的值,interval_unit可以為: YEAR, MONTH
eg> select numtoyminterval(100, 'MONTH') from dual;
-- 結果為:+000000008-04