知识大全 oracle中的INTERVAL函数详解

Posted 字节

篇首语:不怕学不成,就怕心不诚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle中的INTERVAL函数详解相关的知识,希望对你有一定的参考价值。

oracle中的INTERVAL函数详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  oracle中的INTERVAL函数详解

  INTERVAL YEAR TO MONTH数据类型

  Oracle语法:

  INTERVAL integer [ integer] YEAR | MONTH [(precision)][TO YEAR | MONTH]

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

  eg:

  INTERVAL YEAR( ) TO MONTH

  表示: 年 个月 YEAR( ) 表示年的精度为 可见 刚好为 为有效数值 如果该处YEAR(n) n< 就会出错 注意默认是

  INTERVAL YEAR( )

  表示: 年 个月

  INTERVAL MONTH( )

  表示: 个月 注意该处MONTH的精度是 啊

  INTERVAL YEAR

  表示: 年 同 INTERVAL YEAR TO MONTH 是一样的

  INTERVAL MONTH

  表示: 个月 同 INTERVAL YEAR TO MONTH 是一样

  INTERVAL YEAR

  表示: 该处表示有错误 精度是 了 但系统默认是 所以该处应该写成 INTERVAL YEAR( ) 或 改成大于 小于等于 的数值都可以的

  INTERVAL YEAR TO MONTH + INTERVAL MONTH =

  INTERVAL YEAR TO MONTH

  表示: 年 个月 + 个月 = 年 个月

  与该类型相关的函数:

  NUMTODSINTERVAL(n interval_unit )

  将n转换成interval_unit所指定的值 interval_unit可以为: DAY HOUR MINUTE SECOND

  注意该函数不可以转换成YEAR和MONTH的

  NUMTOYMINTERVAL(n interval_unit )

  interval_unit可以为: YEAR MONTH

  eg: (Oracle Version RedHat Linux )

  SQL> select numtodsinterval( DAY ) from dual;

  NUMTODSINTERVAL( DAY )

  

  + : :

  SQL> c/DAY/SECOND

   * select numtodsinterval( SECOND ) from dual

  SQL> /

  NUMTODSINTERVAL( SECOND )

  

  + : :

  SQL> c/SECOND/MINUTE

   * select numtodsinterval( MINUTE ) from dual

  SQL> /

  NUMTODSINTERVAL( MINUTE )

  

  + : :

  SQL> c/MINUTE/HOUR

   * select numtodsinterval( HOUR ) from dual

  SQL> /

  NUMTODSINTERVAL( HOUR )

  

  + : :

  SQL> c/HOUR/YEAR

   * select numtodsinterval( YEAR ) from dual

  SQL> /

  select numtodsinterval( YEAR ) from dual

  *

  ERROR at line :

  ORA : illegal argument for function

  SQL> select numtoyminterval( year ) from dual;

  NUMTOYMINTERVAL( YEAR )

  

  +

  SQL> c/year/month

   * select numtoyminterval( month ) from dual

  SQL> /

  NUMTOYMINTERVAL( MONTH )

  

  +

  时间的计算:

  SQL> select to_date( yyyy mm dd ) to_date( yyyy mm dd ) from dual;

  TO_DATE( YYYY MM DD ) TO_DATE( YYYY MM DD )

  

  

   可以相减的结果为天

  SQL> c/ /

   * select to_date( yyyy mm dd ) to_date( yyyy mm dd ) from dual

  SQL> /

  TO_DATE( YYYY MM DD ) TO_DATE( YYYY MM DD )

  

  

   也可以为负数的

  SQL> c/ /

   * select to_date( yyyy mm dd ) to_date( yyyy mm dd ) from dual

  SQL> /

  TO_DATE( YYYY MM DD ) TO_DATE( YYYY MM DD )

  

  

  下面看看INTERVAL YEAR TO MONTH怎么用

  SQL> create table bb(a date b date c interval year( ) to month);

  Table created

  SQL> desc bb;

  Name Null? Type

  

  A DATE

  B DATE

  C INTERVAL YEAR( ) TO MONTH

  SQL> insert into bb values(to_date( yyyy mm dd ) to_date( yyyy mm dd ) null)

   row created

  SQL> select * from bb;

  A B

  

  C

  

   DEC DEC

  SQL> update bb set c = numtoyminterval(a b year );

   row updated

  SQL> select * from bb;

  A B

  

  C

  

   DEC DEC

  +

   直接将相减的天变成年了 因为我指定变成年的

  SQL> select a b c from bb;

  A B

  

  C

  

  

  +

  SQL> insert into bb values(null null numtoyminterval( month ));

   row created

  SQL> select * from bb;

  A B C

  

   DEC DEC +

  +

  SQL> insert into bb values ( null null numtoyminterval( year ));

   row created

  SQL> select * from bb;

  A B C

  

   DEC DEC +

  +

  +

  ========================

  INTERVAL YEAR TO MONTH类型 个TIMESTAMP类型的时间差别 内部类型是 长度是 其中 个字节存储年份差异 存储的时候在差异上加了一个 X 的偏移量 一个字节存储月份的差异 这个差异加了 的偏移量

  SQL> ALTER TABLE TestTimeStamp ADD E INTERVAL YEAR TO MONTH;

  SQL> update testTimeStamp set e=(select interval year + interval month year from dual);

  已更新 行

  SQL> mit;

  提交完成

  SQL> select dump(e ) from testTimeStamp;

  DUMP(E )

  

  Typ= Len= :

  Typ= Len= :

  Typ= Len= :

  年 X X =

  月 x =

  INTERVAL DAY TO SECOND数据类型

  Oracle语法:

  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值的范围是 到 默认是 time_expr的格式为:HH[:MI[:SS[ n]]] or MI[:SS[ n]] or SS[ n] n表示微秒

  该类型与INTERVAL YEAR TO MONTH有很多相似的地方 建议先看INTERVAL YEAR TO MONTH再看该文

  范围值:

  HOUR: to

  MINUTE: to

  SECOND: to

  eg:

  INTERVAL : : DAY TO SECOND( )

  表示: 天 小时 分 秒

  INTERVAL : DAY TO MINUTE

  表示: 天 小时 分

  INTERVAL DAY( ) TO HOUR

  表示: 天 小时 为 为精度 所以 DAY( ) 注意默认值为

  INTERVAL DAY( )

  表示: 天

  INTERVAL : : HOUR TO SECOND( )

  表示: 小时 分 秒

  INTERVAL : HOUR TO MINUTE

  表示: 小时 分

  INTERVAL HOUR

  表示: 小时

  INTERVAL : MINUTE TO SECOND

  表示: 分 秒

  INTERVAL MINUTE

  表示: 分

  INTERVAL DAY

  表示: 天

  INTERVAL HOUR

  表示: 小时

  INTERVAL MINUTE

  表示: 分

  INTERVAL HOUR( )

  表示: 小时

  INTERVAL SECOND( )

  表示: 秒 因为该地方秒的后面精度设置为 要进行四舍五入

  INTERVAL DAY INTERVAL HOUR = INTERVAL DAY TO SECOND

  表示: 天 小时 = 天 秒

  ==================

  INTERVAL DAY TO SECOND类型存储两个TIMESTAMP之间的时间差异 用日期 小时 分钟 秒钟形式表示 该数据类型的内部代码是 长度位 字节

  l 个字节表示天数(增加 X 偏移量)

  l 小时 分钟 秒钟各用一个字节表示(增加 偏移量)

  l 个字节表示秒钟的小时差异(增加 X 偏移量)

  以下是一个例子

  SQL> alter table testTimeStamp add f interval day to second ;

  表已更改

  SQL> update testTimeStamp set f=(select interval day + interval second from dual);

  已更新 行

  SQL> mit;

  提交完成

  SQL> select dump(f ) from testTimeStamp;

  DUMP(F )

  

  Typ= Len= : c c

  Typ= Len= : c c

  Typ= Len= : c c

  日期 X X =

  小时 =

  分钟 =

  秒钟 =

cha138/Article/program/Oracle/201311/16710

相关参考

知识大全 Oracle10g中的hints调整机制详解

Oracle10g中的hints调整机制详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下

知识大全 Oracle数据库中的索引详解

Oracle数据库中的索引详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一ROWID的概念

知识大全 Oracle中的Merge函数(批量更新/删除)

Oracle中的Merge函数(批量更新/删除)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 SQL Server时间函数用法详解

SQLServer时间函数用法详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的时间

知识大全 ORACLE内置函数大全

ORACLE内置函数大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的单记录函数AS

知识大全 oracle常用函数汇总

以下是对oracle中的常用函数进行了汇总介绍需要的朋友可以过来参考下   一运算符算术运算符+*/可以在select语句中使用连接运算符||selectdeptno||dnamefromd

知识大全 oracle中decode函数用法

  DECODE函数相当于一条件语句(IF)它将输入数值与函数中的参数列表相比较根据输入值返回一个对应值函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式当然如果未能与任何一个实参序偶匹配成功

知识大全 oracle数据库生成随机数的函数

  在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数其中常用的有以下两个  DBMS_RANDOMVALUE函数  该函数用来产生一个随机数有两种用法  产生一个

知识大全 Asp函数详解

Asp函数详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Cbool(string)转换为布尔值

知识大全 详解ASP.NET清除HTML标记的函数

详解ASP.NET清除HTML标记的函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!//清除HT