oracle中的INTERVAL函式用法

2021-10-21 13:47:53 字數 4471 閱讀 5810

一、interval year to month 型別

格式:

該資料型別常用來表示一段時間差, 注意時間差只精確到年和月, precision為年或月的精確域, 有效範圍是0到9, 預設值為2

[

] 為可選項

| 表示任選其中一項

interval

'integer [- integer]' [

(precision)]

[to ]

案例1:

表示123年2個月。「year(3)」 表示年的精度為3, 如果year(n), n<3就會報錯,ora-01873間隔的前導精度太小(注意預設是2)

select

interval

'123-2'

year(3

)tomonth

from dual;

+123

-02

案例2:

如果前面沒有寫減號,可以省略後面的』to 』,如果要寫後面的必須跟前面的統一

select

interval

'12'

year

from dual;+12

-00--表示12年

select

interval

'12'

year

toyear

from dual;+12

-00--表示12年

select

interval

'9'month

from dual;+00

-09--表示9個月

select

interval

'9'month

tomonth

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

)tomonth

from dual;

+100-00

select

interval

'1199'

month

from dual;+99

-11

案例5:

select

interval

'5-11'

year

tomonth

+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表示微秒

範圍值:

[

] 為可選項

| 表示任選其中一項

interval

'' [

( leading_precision )]|

second

[( leading_precision [

, fractional_seconds_precision ]

)] } [

to ]

案例1:

select

interval

'5 5:20:12.15'

dayto

second(3

)from dual;+05

05:20:12.150

--表示5天5小時20分12.150秒

select

interval

'5 5:20:12.15'

dayto

second(2

)from dual;+05

05:20:12.15

--表示5天5小時20分12.15秒

案例2:

表示5天5小時20分

select

interval

'5 5:20'

dayto

minute

from dual;+05

05:20:00

案例3:

表示365天5小時, 「day(3)」 表示天的精度為3, 如果day(n), n<3就會報錯,ora-01873間隔的前導精度太小(注意預設是2)

select

interval

'365 5'

day(3)

tohour

from dual;

+365

05:00:00

案例4:

表示365天

select

interval

'365'

day(3)

from dual;

+365

00:00:00

案例5:

表示5小時20分12.15555秒

select

interval

'5:20:12.15555'

hour

tosecond(5

)from dual;+00

05:20:12.15555

案例6:

表示5小時20分

select

interval

'5:20'

hour

tominute

from dual;+00

05:20:00

案例7:

select

interval

'30.12345'

second(4

)from dual;

+0000

00:00:30.123450

--表示30.123450秒

select

interval

'30.12345'

second(2

,4)from dual;+00

00:00:30.1235

--表示30.1235秒, 因為該地方秒的後面精度設定為4, 要進行四捨五入

案例8:

表示1天,一天24小時,自動換算成1天

select

interval

'24'

hour

from dual;+01

00:00:00

案例9:

select

interval

'20'

day-

interval

'21'

hour

from dual;

+000000019

03:00:00.000000000

--表示 20天-21小時=19天3小時

select sysdate -

(interval

'1'hour

)from dual;

2021/3

/912:14:44

--表示當前時間前乙個小時時間

oracle中的角色

oracle 中的角色 一 何為角色?我在前面的篇幅中說明許可權和使用者。慢慢的在使用中你會發現乙個問題 如果有一組人,他們的所需的許可權是一樣的,當對他們的許可權進行管理的時候會很不方便。因為你要對這組中的每個使用者的許可權都進行管理。有乙個很好的解決辦法就 是 角色。角色是一組許可權的集合,將角...

Oracle中的約束

資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則,在oracle中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種方法來實現,在這三種方法中,因為約束易於維護,並且具有最好的效能,所以作為維護資料完整性的首選。1.約束 約束用於確保資料庫資料滿足特定的商業規則。在oracle中,約...

oracle中的序列

oracle中的序列 sequence 的作用相當與sqlserver中的identify作為乙個表的自動增加且唯一標識的列 下面我就用乙個簡單的序列來實現 1.建立序列 create sequence sq sq宣告乙個序列的名稱 start with 1 宣告序列的開始值 immediate b...