新聞中心
Oracle中TIMESTAMP類型全面解析:類型介紹、實(shí)例及用法技巧

在Oracle數(shù)據(jù)庫(kù)中,TIMESTAMP類型用于存儲(chǔ)日期和時(shí)間信息,具有很高的精度,可以表示到秒的小數(shù)點(diǎn)后9位,TIMESTAMP類型比DATE類型具有更高的時(shí)間精度,能夠滿足更多場(chǎng)景的需求,本文將詳細(xì)介紹Oracle中TIMESTAMP的幾種類型,并通過實(shí)例講解它們的用法。
TIMESTAMP類型介紹
1、TIMESTAMP
TIMESTAMP是最基本的TIMESTAMP類型,它可以表示從公元前4712年1月1日到公元9999年12月31日的任意時(shí)間點(diǎn),精度為秒的小數(shù)點(diǎn)后9位。
2、TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH TIME ZONE類型在TIMESTAMP的基礎(chǔ)上增加了時(shí)區(qū)信息,可以表示全球任意時(shí)區(qū)的時(shí)間點(diǎn),該類型在存儲(chǔ)時(shí)會(huì)保存時(shí)區(qū)信息,查詢時(shí)可以根據(jù)當(dāng)前會(huì)話的時(shí)區(qū)進(jìn)行轉(zhuǎn)換。
3、TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE類型與TIMESTAMP WITH TIME ZONE類似,也包含時(shí)區(qū)信息,不同之處在于,TIMESTAMP WITH LOCAL TIME ZONE在存儲(chǔ)時(shí)會(huì)將時(shí)間轉(zhuǎn)換為本地時(shí)區(qū),查詢時(shí)以本地時(shí)區(qū)顯示。
4、INTERVAL YEAR TO MONTH
INTERVAL YEAR TO MONTH類型用于表示一段時(shí)間,單位為年和月,可以使用該類型表示5年3個(gè)月。
5、INTERVAL DAY TO SECOND
INTERVAL DAY TO SECOND類型用于表示一段時(shí)間,單位為天、小時(shí)、分鐘和秒,該類型可以精確到秒的小數(shù)點(diǎn)后9位。
實(shí)例
1、TIMESTAMP類型的使用
創(chuàng)建一個(gè)表,包含TIMESTAMP類型的字段:
CREATE TABLE t_timestamp (
id NUMBER,
ts TIMESTAMP
);
插入數(shù)據(jù):
INSERT INTO t_timestamp (id, ts) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp;
結(jié)果:
ID TS --- --------------------- 1 2021-01-01 12:30:45.6789
2、TIMESTAMP WITH TIME ZONE類型的使用
創(chuàng)建一個(gè)表,包含TIMESTAMP WITH TIME ZONE類型的字段:
CREATE TABLE t_timestamp_tz (
id NUMBER,
tstz TIMESTAMP WITH TIME ZONE
);
插入數(shù)據(jù):
INSERT INTO t_timestamp_tz (id, tstz) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789 +08:00');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp_tz;
結(jié)果(根據(jù)當(dāng)前會(huì)話的時(shí)區(qū)進(jìn)行轉(zhuǎn)換):
ID TSTZ --- --------------------- 1 2021-01-01 04:30:45.6789
3、TIMESTAMP WITH LOCAL TIME ZONE類型的使用
創(chuàng)建一個(gè)表,包含TIMESTAMP WITH LOCAL TIME ZONE類型的字段:
CREATE TABLE t_timestamp_ltz (
id NUMBER,
tsltz TIMESTAMP WITH LOCAL TIME ZONE
);
插入數(shù)據(jù):
INSERT INTO t_timestamp_ltz (id, tsltz) VALUES (1, TIMESTAMP '2021-01-01 12:30:45.6789 +08:00');
查詢數(shù)據(jù):
SELECT * FROM t_timestamp_ltz;
結(jié)果(以本地時(shí)區(qū)顯示):
ID TSLTZ --- --------------------- 1 2021-01-01 12:30:45.6789
4、INTERVAL YEAR TO MONTH類型的使用
創(chuàng)建一個(gè)表,包含INTERVAL YEAR TO MONTH類型的字段:
CREATE TABLE t_interval_year_to_month (
id NUMBER,
iytm INTERVAL YEAR(5) TO MONTH
);
插入數(shù)據(jù):
INSERT INTO t_interval_year_to_month (id, iytm) VALUES (1, INTERVAL '5-3' YEAR TO MONTH);
查詢數(shù)據(jù):
SELECT * FROM t_interval_year_to_month;
結(jié)果:
ID IYTM --- ------------ 1 +05-03
5、INTERVAL DAY TO SECOND類型的使用
創(chuàng)建一個(gè)表,包含INTERVAL DAY TO SECOND類型的字段:
CREATE TABLE t_interval_day_to_second (
id NUMBER,
idts INTERVAL DAY(2) TO SECOND(6)
);
插入數(shù)據(jù):
INSERT INTO t_interval_day_to_second (id, idts) VALUES (1, INTERVAL '10 12:30:45.6789' DAY TO SECOND);
查詢數(shù)據(jù):
SELECT * FROM t_interval_day_to_second;
結(jié)果:
ID IDTS --- ------------------- 1 +10 12:30:45.678900
用法技巧
1、TIMESTAMP類型與DATE類型之間的轉(zhuǎn)換
將TIMESTAMP轉(zhuǎn)換為DATE:
SELECT TO_DATE(ts, 'YYYY-MM-DD HH24:MI:SS') FROM t_timestamp;
將DATE轉(zhuǎn)換為TIMESTAMP:
SELECT TO_TIMESTAMP(d, 'YYYY-MM-DD HH24:MI:SS') FROM t_date;
2、TIMESTAMP類型與字符串之間的轉(zhuǎn)換
將TIMESTAMP轉(zhuǎn)換為字符串:
SELECT TO_CHAR(ts, 'YYYY-MM-DD HH24:MI:SS') FROM t_timestamp;
將字符串轉(zhuǎn)換為TIMESTAMP:
SELECT TO_TIMESTAMP('2021-01-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS') FROM dual;
3、使用時(shí)區(qū)
在插入數(shù)據(jù)時(shí),可以指定時(shí)區(qū):
INSERT INTO t_timestamp_tz (id, tstz) VALUES (2, TIMESTAMP '2021-01-01 12:30:45.6789 AT TIME ZONE 'UTC');
查詢時(shí),可以指定時(shí)區(qū):
SELECT id, tstz AT TIME ZONE 'UTC' FROM t_timestamp_tz WHERE id = 2;
4、日期時(shí)間運(yùn)算
TIMESTAMP類型支持日期時(shí)間運(yùn)算,
SELECT ts + INTERVAL '1' DAY FROM t_timestamp;
Oracle中的TIMESTAMP類型提供了豐富的日期和時(shí)間表示方法,可以滿足各種場(chǎng)景的需求,通過本文的介紹和實(shí)例,相信讀者已經(jīng)對(duì)TIMESTAMP類型有了更深入的了解,可以更好地在Oracle數(shù)據(jù)庫(kù)中應(yīng)用這些類型。
網(wǎng)站標(biāo)題:Oracle中TIMESTAMP的幾種類型介紹與實(shí)例
當(dāng)前地址:http://m.5511xx.com/article/dpedhje.html


咨詢
建站咨詢
