在本教學中,我們將介紹Oracle INTERVAL
資料型別,並演示如何有效處理區間值。
Oracle提供了兩種日期時間資料型別:DATE
和TIMESTAMP
用於儲存時間點資料。另外,它提供INTERVAL
資料型別用於儲存一段時間。
有兩種型別的INTERVAL
:
INTERVAL YEAR TO MONTH
資料型別使用YEAR
和MONTH
欄位儲存一段時間。
下面介紹一個INTERVAL YEAR TO MONTH
:
INTERVAL YEAR [(year_precision)] TO MONTH
year_precision
代表YEAR
欄位中的位數。範圍從0
到9
。
year_precision
是可選的。如果省略year_precision
引數,則預設為2
。也就是說,預設情況下,最多可以儲存99
年和11
個月的期限,這個期限必須小於100
年。
要指定INTERVAL YEAR TO MONTH
資料型別的文字值,可以使用以下格式:
INTERVAL 'year[-month]' leading (precision) TO trailing
leading
和trailing
可以是YEAR
或MONTH
。
以下是引數:
year
和month
是整個區間的leading
和trailing
的整數。 如果leading
是YEAR
,trailing
是MONTH
,那麼month
欄位的範圍從0
到11
。trailing
列必須小於leading
列。 例如,INTERVAL '1-2' MONTH TO YEAR
是無效的,因為leading
列YEAR
大於MONTH
的leading
欄位。leading
欄位中的最大數位位數。精度範圍為:0~9
,預設值為2
。下表說明了INTERVAL YEAR TO MONTH
文字的範例:
INTERVAL YEAR TO MONTH 文字 |
含意 |
---|---|
INTERVAL '120-3' YEAR(3) TO MONTH |
間隔120年,3個月; 由於前導欄位的值大於預設精度(2位),因此必須指定前導欄位精度YEAR(3) 。 |
INTERVAL '105' YEAR(3) |
間隔105年0個月。 |
INTERVAL '500' MONTH(3) |
間隔500個月。 |
INTERVAL '9' YEAR |
間隔9年,相當於INTERVAL '9-0' YEAR TO MONTH |
INTERVAL '40' MONTH |
40個月或3年4個月,相當於INTERVAL '3-4' YEAR TO MONTH |
INTERVAL '180' YEAR |
無效的時間間隔,因為’180’有3個數位,它大於預設精度(2) |
首先,建立一個名為candidates
的新表格:
CREATE TABLE candidates (
candidate_id NUMBER,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
job_title VARCHAR2(255) NOT NULL,
year_of_experience INTERVAL YEAR TO MONTH,
PRIMARY KEY (candidate_id)
);
在此表中,有一個year_of_experience
列,其資料型別為INTERVAL YEAR TO MONTH
。
其次,將資料插入candidates
表:
INSERT INTO candidates (
first_name,
last_name,
job_title,
year_of_experience
)
VALUES (
'Camila',
'Kramer',
'SCM Manager',
INTERVAL '10-2' YEAR TO MONTH
);
在這個上面這個插入語句中,在year_of_experience
列中插入了一個INTERVAL '10-2' YEAR TO MONTH
間隔字面值。
INSERT INTO candidates (
first_name,
last_name,
job_title,
year_of_experience
)
VALUES (
'Keila',
'Doyle',
'SCM Staff',
INTERVAL '9' MONTH
);
在這個語句中,在year_of_experience
列中插入了一個為INTERVAL '9' MONTH
的間隔字面值。
第三,查詢INTERVAL YEAR TO MONTH
列的資料:
SELECT
*
FROM
candidates;
執行上面查詢語句,得到以下結果 -
INTERVAL DAY TO SECOND
是一種按天,小時,分鐘和秒鐘儲存一段時間。
以下顯示INTERVAL DAY TO SECOND
資料型別的語法:
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
在上面這個語法中,
DAY
欄位中的位數。取值範圍是0~9
,預設值是2
。SECOND
欄位小數部分的位數。範圍從0~9
。如果省略fractional_seconds_precision
,則預設為6
。INTERVAL YEAR TO SECOND
的字面值形式如下:
INTERVAL leading (leading_precision) to trailing(fractional_seconds_precision)
下表顯示了INTERVAL YEAR TO SECOND
文字的一些範例:
INTERVAL YEAR TO SECOND 字面值 |
含意 |
---|---|
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) |
11天,10小時,09分08秒,555/千秒。 |
INTERVAL '11 10:09' DAY TO MINUTE |
11天,10小時和09分鐘。 |
INTERVAL '100 10' DAY(3) TO HOUR |
100天10個小時。 |
INTERVAL '999' DAY(3) |
999天 |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) |
9小時08分鐘和7.6666666秒。 |
INTERVAL '09:30' HOUR TO MINUTE |
9小時30分鐘。 |
INTERVAL '8' HOUR |
8小時 |
INTERVAL '15:30' MINUTE TO SECOND |
15分30秒。 |
INTERVAL '30' MINUTE |
30分鐘 |
INTERVAL '5' DAY |
5天 |
INTERVAL '40' HOUR |
40小時 |
INTERVAL '15' MINUTE |
15分鐘 |
INTERVAL '250' HOUR(3) |
250個小時 |
INTERVAL '15.6789' SECOND(2,3) |
四捨五入到15.679秒。 由於精度為3,分數秒’6789’被捨入為’679’ |
在本教學中,您已學習如何使用Oracle INTERVAL
資料型別在表中儲存時間段。