oracle interval day to second数据类型-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3977418
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2006-12-08 15:08:48

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值的范围是0到9, 默认是2. time_expr的格式为:hh[:mi[:ss[.n]]] or mi[:ss[.n]] or ss[.n], n表示微秒.
该类型与interval year to month有很多相似的地方,建议先看interval year to month再看该文.

范围值:
hour:    0 to 23
minute: 0 to 59
second: 0 to 59.999999999

eg:
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天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小时

interval '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个字节表示天数(增加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) from testtimestamp;

dump(f,16)

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

typ=183 len=11: 80,0,0,5,3c,3c,46,80,0,0,0
typ=183 len=11: 80,0,0,5,3c,3c,46,80,0,0,0
typ=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=0
阅读(7711) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-12-10 14:40:46

顶起!

|
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图