知识大全 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调整机制详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下
Oracle数据库中的索引详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一ROWID的概念
Oracle中的Merge函数(批量更新/删除) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQLServer时间函数用法详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL中的时间
ORACLE内置函数大全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL中的单记录函数AS
以下是对oracle中的常用函数进行了汇总介绍需要的朋友可以过来参考下 一运算符算术运算符+*/可以在select语句中使用连接运算符||selectdeptno||dnamefromd
DECODE函数相当于一条件语句(IF)它将输入数值与函数中的参数列表相比较根据输入值返回一个对应值函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式当然如果未能与任何一个实参序偶匹配成功
在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数其中常用的有以下两个 DBMS_RANDOMVALUE函数 该函数用来产生一个随机数有两种用法 产生一个
Asp函数详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Cbool(string)转换为布尔值
详解ASP.NET清除HTML标记的函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!//清除HT