oracle中interval函數用法詳解

來源:互聯網
上載者:User

一、interval函數
interval函數用於將一個整形值轉換成時間值date類型的年月或時分秒。

oracle文法:

interval 'integer [- integer]' {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} [(precision)][TO {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND}]

註:
1、年、月、日、時、分、秒可以單獨使用。
2、{YEAR | MONTH} to {YEAR | MONTH}和
{DAY | HOUR | MINUTE | SECOND} to {DAY | HOUR | MINUTE | SECOND}是分別使用。
3、該函數常用來計算一段時間差。
4、precision為精度域,有效範圍是0到9,預設值為2。這裡精度是指顯示結果的精度,如果結果超過兩位長度要指定精度。

例子:
1、表示2個年

select interval '2' year from dual;

INTERVAL'2'YEAR
---------------------------------------------------------------------------
+02-00

2、表示1234個年

select interval '1234' year(4) from dual;

INTERVAL'1234'YEAR(4)
---------------------------------------------------------------------------
+1234-00


3、表示120個月
1)不加精度

select interval '120' month from dual;

INTERVAL'120'MONTH
---------------------------------------------------------------------------
+10-00

2)加精度

select interval '120' month(3) from dual;

INTERVAL'120'MONTH(3)
---------------------------------------------------------------------------
+010-00

4、表示2天

select interval '2' day from dual;

INTERVAL'2'DAY
---------------------------------------------------------------------------
+02 00:00:00

5、時、分、秒的單獨用法以此類推

6、表示一個具體的時間(日到秒)

select interval '2 12:00:59' day to second from dual;

INTERVAL'212:00:59'DAYTOSECOND
---------------------------------------------------------------------------
+02 12:00:59.000000

7、表示一個具體的時間(年到月)

select interval '21-10' year to month from dual;

INTERVAL'21-10'YEARTOMONTH
---------------------------------------------------------------------------
+21-10

二、numtodsinterval
numtodsinterval函數,用於將整數轉換成時間值date類型的日、時、分、秒。

文法:

numtodsinterval(n, 'interval_unit')

n為整數,interval_unit可以為day,hour,minute,second。該函數不能轉換為year和month。

例子:
1、表示100秒

select numtodsinterval(100, 'second') from dual;

NUMTODSINTERVAL(100,'SECOND')
---------------------------------------------------------------------------
+000000000 00:01:40.000000000

2、表示200分鐘

select numtodsinterval(200, 'minute') from dual;

NUMTODSINTERVAL(200,'MINUTE')
---------------------------------------------------------------------------
+000000000 03:20:00.000000000

3、表示60個小時

select numtodsinterval(60, 'hour') from dual;

NUMTODSINTERVAL(60,'HOUR')
---------------------------------------------------------------------------
+000000002 12:00:00.000000000

4、表示80個天

select numtodsinterval(80, 'day') from dual;

NUMTODSINTERVAL(80,'DAY')
---------------------------------------------------------------------------
+000000080 00:00:00.000000000

三、numtoyminterval
numtoyminterval函數,用於將整數轉換成時間值date類型的年、月。

文法:

numtoyminterval(n, 'interval_unit')

n為整數,interval_unit可以為year,month。

例子:
1、表示1234年

select numtoyminterval(1234, 'year') from dual;

NUMTOYMINTERVAL(1234,'YEAR')
---------------------------------------------------------------------------
+000001234-00

2、表示120個月

select numtoyminterval(120, 'month') from dual;

NUMTOYMINTERVAL(120,'MONTH')
---------------------------------------------------------------------------
+000000010-00

從例子可以看出numtodsinterval函數、numtoyminterval函數和interval函數加上精度後的效果是一樣的。

四、函數的作用
那麼問題來了,這些時間轉換函式的作用在哪裡呢?
如果我們要計算一個date類型的值加上100秒、200分鐘、80小時、60天、18個月、21年,就可以使用這些函數來進行計算。

例子:
1、

select sysdate, sysdate + interval '20' day as res from dual;

SYSDATE  RES
--------------- ---------------
22-MAR-16 11-APR-16

2、

select sysdate, sysdate + numtoyminterval(3,'year') as res from dual;

SYSDATE  RES
--------------- ---------------
22-MAR-16 22-MAR-19

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.