ITPub博客

首页 > 数据库 > Oracle > 计算时间函数numtodsinterval&numtominterval

计算时间函数numtodsinterval&numtominterval

原创 Oracle 作者:彩伦 时间:2016-08-09 07:49:56 0 删除 编辑

1.numtodsinterval函数

NUMTODSINTERVAL converts a number to an INTERVAL DAY TO SECOND data type.

 

返回值:

INTERVAL DAY TO SECOND

 

语法:

NUMTODSINTERVAL(n, 'interval_unit')

 

参数:

n  可以是任意数字

interval_unit  指定n表示的是天还是时或分或秒,一般为下面的值:

    DAY

    HOUR

    MINUTE

    SECOND

 

示列:

SQL> select numtodsinterval(23,'hour') from dual;

NUMTODSINTERVAL(23,'HOUR')

---------------------------------------------------------------------------

+000000000 23:00:00.000000000

 

SQL> select sysdate,sysdate+numtodsinterval(30,'day') from dual;

SYSDATE             SYSDATE+NUMTODSINTE

------------------- -------------------

2016-07-19 19:49:19   2016-08-18 19:49:19

 

 

2.numtoyminterval函数

 

NUMTOYMINTERVAL converts a number to an INTERVAL YEAR TO MONTH data type.

 

返回值:

INTERVAL YEAR TO MONTH

 

语法:

NUMTOYMINTERVAL(n, 'interval_unit')

 

参数:

n  可以是任意数据

interval_unit  指定n表示的是年还是月,需要是下面的值:

    YEAR

    MONTH

 

示列:

SQL> select sysdate,sysdate+numtoyminterval(10,'month') from dual;

SYSDATE             SYSDATE+NUMTOYMINTE

------------------- -------------------

2016-07-19 19:51:46   2017-05-19 19:51:46

 

SQL> select sysdate,sysdate+numtoyminterval(10,'year') from dual;

SYSDATE             SYSDATE+NUMTOYMINTE

------------------- -------------------

2016-07-19 19:52:08   2026-07-19 19:52:08

 

 

3.interval函数

----计算时间差

INTERVAL YEAR TO MONTH 数据类型

 

语法:

INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]

----该数据类型常用来表示一段时间差, 注意时间差只精确到年和月. precision为年或月的精确域, 有效范围是0到9, 默认值为2.

 

 

INTERVAL DAY TO SECOND 数据类型

 

语法:

INTERVAL '{ integer | integer time_expr | time_expr }'

{ { DAY | HOUR | MINUTE } [ ( leading_precision ) ]

| SECOND [ ( leading_precision [, fractional_seconds_precision ] ) ] }

[ TO { DAY | HOUR | MINUTE | SECOND [ (fractional_seconds_precision) ] } ]

 

----leading_precision值的范围是0到9, 默认是2. time_expr的格式为:HH[:MI[:SS[.n]]] or MI[:SS[.n]] or SS[.n], n表示微秒.

 

reference    http://blog.sina.com.cn/s/blog_854ec93b0101aahp.html

 

 

4.分区表自动创建分区

----11g新特性,可以利用numtoyminterval/numtodsinterval自动创建分区

   

    在创建分区表时,指定分区的列后,需要指定interval(numtoyminterval(1,'month')) ,可以是month、year、day,然后在指定第一个默认的分区,后面的分区会自动创建

 

示列:

create table p_test

 ( id int,

  update_time date)

 partition by range (update_time)

 interval(numtoyminterval(1,'month'))

 (partition p_test_part1 values less than (to_date('2016-06-01','yyyy-mm-dd')));

 

 

 

 

 

 

reference    http://docs.oracle.com/cd/E11882_01/olap.112/e23381/row_functions053.htm#OLAXS446

http://docs.oracle.com/cd/E11882_01/olap.112/e23381/row_functions054.htm#OLAXS447

http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF51068

http://blog.itpub.net/10271187/viewspace-1765908/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30130773/viewspace-2123183/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-02-06

  • 博文量
    138
  • 访问量
    892105