Interval 用法总结

语法: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

 

posted @ 2019-05-31 10:45  ColaChicken  阅读(23021)  评论(0编辑  收藏  举报