oracle numtodsinterval计算时间差取整,计算时间函数numtodsinterval&numtominterval

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表示微秒.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值