ORACLE中的INTERVAL类型
ORACLE中的INTERVAL類型
INTERVAL數(shù)據(jù)類型用來存儲兩個時間戳之間的時間間隔。可以指定years and months,或者days,hours,minuts,seconds之間的間隔。
ORACLE支持兩種INTEVAL類型,它們分別是YEAR TO MONTH和DAY TO SECOND。每個類型都包含leading field和trailing field。主參數(shù)定義要被計算的date或者time,副參數(shù)定義最小增長量。
下面根據(jù)實例來介紹YEARTO MONTH和DAY TO SECOND。
一、INTERVAL YEAR TO MONTH
聲明INTERVALYEAR TO MONTH的語法是:
其中:
1.????????'INTEGER[-INTEGER],為leadingfield以及可選的trailing field指定具體的數(shù)值。同時month即trailing field的取值范圍是0到11。
2.????????percision,即精度,是對leadingfield的數(shù)值的最大長度的限制。取值范圍為0-9,默認值是2。
代碼一:
DECLARE
?? v_inteval?? INTERVAL YEAR (3) TO MONTH;
BEGIN
?? v_inteval := INTERVAL'123-2' YEAR TO MONTH;
?? DBMS_OUTPUT.put_line(v_inteval);
END;
結(jié)果為:+123-02。
說明:表示123年2個月。在這個例子中,必須指定YEAR,即leading field的精度(percision),因為默認值為2,如果將聲明部分修改為:v_inteval INTERVAL YEAR TO MONTH;會提示精度太小錯誤。另外,需要注意的是,聲明部分需要標(biāo)注精度,但是賦值部分,即v_inteval := INTERVAL '123-2' YEAR TO MONTH;不需要標(biāo)注精度,如果標(biāo)注,會提示語法錯誤。在本例中,如果精度修改為4,則結(jié)果為+0123-02。
代碼二:
select INTERVAL '1234' YEAR(4) from dual;
結(jié)果為:+1234-00。
說明:表示1234年0個月。因為INTERVAL類型之一,INTERVALYEAR TO MONTH,聲明時YEAR(leading field)和MONTH(trailing field)必須同時存在,否則會提示錯誤信息。所以,如果我們單獨引用YEAR或者MONTH時,代碼二的例子無法編譯通過,只能通過sql語句。
類似的例子還有:
select INTERVAL '345' MONTH(3) from dual;
結(jié)果為:+28-09。
二、INTERVAL DAY TO SECOND
聲明INTERVAL DAY TO SECOND的語法是:
其中:
1.????????INTEGER指定days的數(shù)值,數(shù)值不能超過leading_percision。
2.????????time_expr指定格式為HH[:MI[:SS[.n]]]orMI[:SS[.n]] or SS[.n]的時間,n是second的小數(shù)部分,n的長度不能大于fractional_seconds_precision,并受限于fractional_seconds_precision的位數(shù)。如果leadingfield為day,則可以選擇integer time_expr的模式。
3.????????leading_precision為leading_field的精度,取值范圍為0-9,默認值為2。
4.????????fractional_seconds_precision為秒的精度取值范圍1-9,默認值為6。
5.????????HOUR的取值范圍為0-23,MINUTE的取值范圍為0-59,MINUTE的取值范圍為0-59.999999999。
代碼一:
DECLARE
?? v_inteval?? INTERVAL DAY (7) TO SECOND (5);
BEGIN
?? v_inteval := INTERVAL'4 5:12:10.222' DAY TO SECOND;
?? DBMS_OUTPUT.put_line (v_inteval);
END;
結(jié)果為:++000000405:12:10.22200。
說明:表示4天5小時12分10.222秒。在這個例子中,DAY以及SECOND的精度都是可選的,類似INTERVALYEAR TO MONTH,聲明部分需要標(biāo)注精度,但是賦值部分,不需要標(biāo)注精度,如果標(biāo)注,會提示語法錯誤。
代碼二:
select INTERVAL '4 5:12' DAY TO MINUTE from dual;
結(jié)果為:+0405:12:00。
說明:表示4天5小時12分0秒。因為INTEVAL類型之一,INTERVALDAY TO SECOND,聲明時DAY和SECOND必須同時存在,否則會提示錯誤信息。所以,如果我們單獨引用YEAR或者MONTH時,代碼二的例子無法編譯通過,只能通過sql語句。
類似的例子還有:
select INTERVAL '400 5' DAY(3) TO HOUR from dual;
select INTERVAL '400' DAY(3) from dual;
select INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) from dual;
select INTERVAL '11:20' HOUR TO MINUTE from dual;
select INTERVAL '10' HOUR from dual;
select INTERVAL '10:22' MINUTE TO SECOND from dual;
select INTERVAL '10' MINUTE from dual;
select INTERVAL '120' HOUR(3) from dual;
select INTERVAL '30.12345' SECOND(2,4) from dual;(注意,該結(jié)果為+00 00:00:30.1235,如果精度為1,3,則結(jié)果為+0 00:00:30.123,如果精度為3,7,則結(jié)果為+000 00:00:30.1234500)
總結(jié)
以上是生活随笔為你收集整理的ORACLE中的INTERVAL类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的命名规则
- 下一篇: ora-39142,ora-39001,