ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:17.23KB ,
资源ID:6538317      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6538317.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(oracle中的INTERVAL函数详解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

oracle中的INTERVAL函数详解.docx

1、oracle中的INTERVAL函数详解oracle中的INTERVAL函数详解oracle中的INTERVAL函数详解INTERVAL YEAR TO MONTH数据类型Oracle语法:INTERVAL integer - integer YEAR | MONTH (precision)TO YEAR | MONTH该数据类型常用来表示一段时间差, 注意时间差只精确到年和月. precision为年或月的精确域, 有效范围是0到9, 默认值为2.eg:INTERVAL 123-2 YEAR(3) TO MONTH表示: 123年2个月, YEAR(3) 表示年的精度为3, 可见123刚好为

2、3为有效数值, 如果该处YEAR(n), n select numtodsinterval(100,DAY) from dual;NUMTODSINTERVAL(100,DAY)-+000000100 00:00:00.000000000SQL c/DAY/SECOND1* select numtodsinterval(100,SECOND) from dualSQL /NUMTODSINTERVAL(100,SECOND)-+000000000 00:01:40.000000000SQL c/SECOND/MINUTE1* select numtodsinterval(100,MINUTE)

3、 from dualSQL /NUMTODSINTERVAL(100,MINUTE)-+000000000 01:40:00.000000000SQL c/MINUTE/HOUR1* select numtodsinterval(100,HOUR) from dualSQL /NUMTODSINTERVAL(100,HOUR)-+000000004 04:00:00.000000000SQL c/HOUR/YEAR1* select numtodsinterval(100,YEAR) from dualSQL /select numtodsinterval(100,YEAR) from dua

4、l*ERROR at line 1:ORA-01760: illegal argument for functionSQL select numtoyminterval(100,year) from dual;NUMTOYMINTERVAL(100,YEAR)-+000000100-00SQL c/year/month1* select numtoyminterval(100,month) from dualSQL /NUMTOYMINTERVAL(100,MONTH)-+000000008-04时间的计算:SQL select to_date(1999-12-12,yyyy-mm-dd) -

5、 to_date(1999-12-01,yyyy-mm-dd)fromdual;TO_DATE(1999-12-12,YYYY-MM-DD)-TO_DATE(1999-12-01,YYYY-MM-DD)-11- 可以相减的结果为天.SQL c/1999-12-12/1999-01-121* select to_date(1999-01-12,yyyy-mm-dd) - to_date(1999-12-01,yyyy-mm-dd) from dualSQL /TO_DATE(1999-01-12,YYYY-MM-DD)-TO_DATE(1999-12-01,YYYY-MM-DD)-323- 也可

6、以为负数的SQL c/1999-01-12/2999-10-121* select to_date(2999-10-12,yyyy-mm-dd) - to_date(1999-12-01,yyyy-mm-dd)fromdualSQL /TO_DATE(2999-10-12,YYYY-MM-DD)-TO_DATE(1999-12-01,YYYY-MM-DD)-365193下面看看INTERVAL YEAR TO MONTH怎么用.SQL create table bb(a date, b date, c interval year(9) to month);Table created.SQL d

7、esc bb;Name Null? Type- - -A DATEB DATEC INTERVAL YEAR(9) TO MONTHSQL insert into bb values(to_date(1985-12-12, yyyy-mm-dd), to_date(1984-12-01,yyyy-mm-dd), null)1 row created.SQL select *frombb;A B- -C-12-DEC-85 01-DEC-84SQL update bb set c = numtoyminterval(a-b, year);1 row updated.SQL select * fr

8、om bb;A B- -C-12-DEC-85 01-DEC-84+000000376-00- 直接将相减的天变成年了, 因为我指定变成年的SQL select a-b, cfrombb;A-B-C-376+000000376-00SQL insert into bb values(null,null,numtoyminterval(376,month);1 row created.SQL select * from bb;A B C- - -12-DEC-85 01-DEC-84 +000000376-00+000000031-04SQL insert into bb values ( nu

9、ll,null, numtoyminterval(999999999,year);1 row created.SQL select *frombb;A B C- - -12-DEC-85 01-DEC-84 +000000376-00+000000031-04+999999999-00=INTERVAL YEAR TO MONTH类型2个TIMESTAMP类型的时间差别。内部类型是182,长度是5。其中4个字节存储年份差异,存储的时候在差异上加了一个0X80000000的偏移量。一个字节存储月份的差异,这个差异加了60的偏移量。SQL ALTER TABLE TestTimeStamp ADD

10、 E INTERVAL YEAR TO MONTH;SQL update testTimeStamp set e=(select interval 5 year + interval 10 month year from dual);已更新3行。SQL commit;提交完成。SQL select dump(e,16)fromtestTimeStamp;DUMP(E,16)-Typ=182 Len=5: 80,0,0,5,46Typ=182 Len=5: 80,0,0,5,46Typ=182 Len=5: 80,0,0,5,46年:0X80000005-0X80000000=5月:0x46-6

11、0=10INTERVAL 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值的范围是0到9, 默认是2. time_expr的格式

12、为:HH:MI:SS.n or MI:SS.n or SS.n, n表示微秒.该类型与INTERVAL YEAR TO MONTH有很多相似的地方,建议先看INTERVAL YEAR TO MONTH再看该文.范围值:HOUR: 0 to 23MINUTE: 0 to 59SECOND: 0 to 59.999999999eg:INTERVAL 4 5:12:10.222 DAY TO SECOND(3)表示: 4天5小时12分10.222秒INTERVAL 4 5:12 DAY TO MINUTE表示: 4天5小时12分INTERVAL 400 5 DAY(3) TO HOUR表示: 400

13、天5小时, 400为3为精度,所以DAY(3), 注意默认值为2.INTERVAL 400 DAY(3)表示: 400天INTERVAL 11:12:10.2222222 HOUR TO SECOND(7)表示: 11小时12分10.2222222秒INTERVAL 11:20 HOUR TO MINUTE表示: 11小时20分INTERVAL 10 HOUR表示: 10小时INTERVAL 10:22 MINUTE TO SECOND表示: 10分22秒INTERVAL 10 MINUTE表示: 10分INTERVAL 4 DAY表示: 4天INTERVAL 25 HOUR表示: 25小时I

14、NTERVAL 40 MINUTE表示: 40分INTERVAL 120 HOUR(3)表示: 120小时INTERVAL 30.12345 SECOND(2,4)表示: 30.1235秒, 因为该地方秒的后面精度设置为4, 要进行四舍五入.INTERVAL 20 DAY - INTERVAL 240 HOUR = INTERVAL 10-0 DAY TO SECOND表示: 20天 - 240小时 = 10天0秒=INTERVAL DAY TO SECOND类型存储两个TIMESTAMP之间的时间差异,用日期、小时、分钟、秒钟形式表示。该数据类型的内部代码是183,长度位11字节:l 4个字

15、节表示天数(增加0X80000000偏移量)l 小时、分钟、秒钟各用一个字节表示(增加60偏移量)l 4个字节表示秒钟的小时差异(增加0X80000000偏移量)以下是一个例子:SQL alter table testTimeStamp add f interval day to second ;表已更改。SQL update testTimeStamp set f=(select interval 5 day + interval 10 second from dual);已更新3行。SQL commit;提交完成。SQL select dump(f,16)fromtestTimeStamp

16、;DUMP(F,16)-Typ=183 Len=11: 80,0,0,5,3c,3c,46,80,0,0,0Typ=183 Len=11: 80,0,0,5,3c,3c,46,80,0,0,0Typ=183 Len=11: 80,0,0,5,3c,3c,46,80,0,0,0日期:0X80000005-0X80000000=5小时:60-60=0分钟:60-60=0秒钟:70-60=10秒钟小数部分:0X80000000-0X80000000=0select date 2010-01-01 + interval 21 year from dualselect date 2010-01-01 +

17、 interval 123-2 year(4) to month from dualselect date 2010-01-01 + interval 100 month from dualselect date 2010-01-01 + interval 100 day(2) from dualselect date 2010-01-01 + interval 1 2 day to hour from dualselect date 2010-01-01 + interval 1 2:3 day to minute from dualselect date 2010-01-01 + inte

18、rval 1 2:3:4 day to second from dualselect date 2010-01-01 + interval 1:2:3 hour from dualselect date 2010-01-01 + interval 1:2 hour to minute from dualselect date 2010-01-01 + interval 1:2:3 hour to second from dualselect date 2010-01-01 + interval 1:2 minute to second from dual转换函数:select numtoymi

19、nterval(13, month), numtodsinterval(100, hour) from dualPLSQL中的定义及调用:declare v_dts interval day to second := interval 1 2:3:4 day to second; v_dd date := date 2010-01-01;begin execute immediate alter session set nls_date_format = yyyy-mm-dd hh24:mi:ss; select v_dd + v_dts into v_dd from dual; dbms_output.put_line(v_dd);end;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1