oracle中的INTERVAL函数⽤法
oracle中的INTERVAL函数⽤法
⼀、interval year to month 类型
格式:
该数据类型常⽤来表⽰⼀段时间差, 注意时间差只精确到年和⽉, precision为年或⽉的精确域, 有效范围是0到9, 默认值为2
[]为可选项
|表⽰任选其中⼀项
INTERVAL'integer [- integer]' {YEAR|MONTH} [(precision)][TO {YEAR|MONTH}]
案例1:
表⽰123年2个⽉。“YEAR(3)” 表⽰年的精度为3, 如果YEAR(n), n<3就会报错,ORA-01873间隔的前导精度太⼩(注意默认是2)select INTERVAL'123-2'YEAR(3)TO MONTH from dual;+123-02
案例2:
如果前⾯没有写减号,可以省略后⾯的’TO {YEAR | MONTH}’,如果要写后⾯的必须跟前⾯的统⼀
select INTERVAL'12'YEAR from dual;+12-00--表⽰12年
select INTERVAL'12'YEAR TO YEAR from dual;+12-00--表⽰12年
select INTERVAL'9'MONTH from dual;+00-09--表⽰9个⽉
select INTERVAL'9'MONTH TO MONTH from dual;+00-09--表⽰9个⽉
案例3:
表⽰12个⽉,⼀年12⽉,⾃动换算成1年
select INTERVAL'12'MONTH from dual;+01-00
案例4:
YEAR和MONTH的默认精度为2,MONTH 的精度是换算成年来看的
select INTERVAL'1200'MONTH from dual;--ORA-01873间隔的前导精度太⼩
select INTERVAL'1200'MONTH(3)TO MONTH from dual;+100-00
select INTERVAL'1199'MONTH from dual;+99-11
案例5:
select INTERVAL'5-11'YEAR TO MONTH+INTERVAL'20'MONTH from dual;+07-07--表⽰ 5年11个⽉+20个⽉=7年7个⽉
select sysdate -(INTERVAL'1'MONTH)from dual;2021/2/913:14:44--表⽰当前时间前⼀个⽉时间
⼆、interval day to second 类型
格式:
leading_precision值的范围是0到9, 默认是2; time_expr的格式为:HH[:MI[:SS[.n]]] or MI[:SS[.n]] or SS[.n], n表⽰微秒
范围值:
HOUR: 0 to 23
MINUTE: 0 to 59
SECOND: 0 to 59.999999999
[]为可选项
|表⽰任选其中⼀项
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)] } ]
案例1:
select INTERVAL'5 5:20:12.15'DAY TO SECOND(3)from dual;+0505:20:12.150--表⽰5天5⼩时20分12.150秒
select INTERVAL'5 5:20:12.15'DAY TO SECOND(2)from dual;+0505:20:12.15--表⽰5天5⼩时20分12.
15秒
案例2:
表⽰5天5⼩时20分
select INTERVAL'5 5:20'DAY TO MINUTE from dual;+0505:20:00
案例3:
表⽰365天5⼩时, “DAY(3)” 表⽰天的精度为3, 如果DAY(n), n<3就会报错,ORA-01873间隔的前导精度太⼩(注意默认是2)select INTERVAL'365 5'DAY(3)TO HOUR from dual;+36505:00:00
案例4:
表⽰365天
select INTERVAL'365'DAY(3)from dual;+36500:00:00
案例5:
表⽰5⼩时20分12.15555秒
select INTERVAL'5:20:12.15555'HOUR TO SECOND(5)from dual;+0005:20:12.15555
案例6:
表⽰5⼩时20分
select INTERVAL'5:20'HOUR TO MINUTE from dual;+0005:20:00
oracle四舍五入案例7:
select INTERVAL'30.12345'SECOND(4)from dual;+000000:00:30.123450--表⽰30.123450秒
select INTERVAL'30.12345'SECOND(2,4)from dual;+0000:00:30.1235--表⽰30.1235秒, 因为该地⽅秒的后⾯精度设置为4, 要进⾏四舍五⼊
案例8:
表⽰1天,⼀天24⼩时,⾃动换算成1天
select INTERVAL'24'HOUR from dual;+0100:00:00
案例9:
select INTERVAL'20'DAY-INTERVAL'21'HOUR from dual;+00000001903:00:00.000000000--表⽰ 20天-21⼩时=19天3⼩时
select sysdate -(INTERVAL'1'HOUR)from dual;2021/3/912:14:44--表⽰当前时间前⼀个⼩时时间

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。