Orale Date型とTimeStamp型を使用するサンプル

OraleのDate型とTimeStamp型を使用するサンプルです。

確認環境
・Oracle Express Edition 11g Release 2
・Windows 10

目次

date DATE型
timestamp TIMESTAMP型

DATE型

  • 年、月、日、時、分、秒を持ちます。ミリ秒がありません。
  • 文字列をDate型にするには、TO_DATE関数を使用します。
  • Date型を文字列にするには、TO_CHAR関数を使用します。

date型をもつテーブルを作成する

date型をもつテーブルをcreate tableで作成します。

CREATE TABLE "HR"."SYAIN1" 
("ID"   NUMBER(6,0), 
"NAME"  VARCHAR2(20), 
"DATE1" DATE,  
PRIMARY KEY ("ID")
);

4行目は、Date型です。桁数は不要です。

以下のテーブルが作成されました。

SYAIN1テーブル
項目名 データ型
id NUMBER(6,0)
name VARCHAR2(20)
date1 DATE

date型の項目にinsertする

上記テーブルに対してinsert文でデータを登録します。

insert into syain1
(id,name,date1)
values (1,'鈴木',TO_DATE('2020/05/04 22:30:10','YYYY-MM-DD HH24:MI:SS'));

insert into syain1
(id,name,date1)
values (2,'田中','2020/05/04 22:45:15');

insert into syain1
(id,name,date1)
values (3,'佐藤','20200504 23:00:05');

3行目は、TO_DATE関数を使用してDate型のカラムに登録しています。HH24は0~23の24時間表記です。MIは分で0~59です。SSは秒で0~59です。
7行目は、TO_DATE関数を使わず文字列のままですが登録できます。
11行目は、年月日の区切りのスラッシュを入れていませんが登録できます。

結果

登録後のテーブルは、以下のとおりです。

syain1テーブル
id name date1
1 鈴木 2020/05/04 22:30:10
2 田中 2020/05/04 22:45:15
3 佐藤 2020/05/04 23:00:05

date型の項目をselectする

date型の項目をselectするサンプルです。

SELECT TO_CHAR(date1, 'YYYY-MM-DD HH24:MI:SS')
FROM syain1
where id = '1';
-- 2020-05-04 22:30:10

SELECT date1
FROM syain1
where id = '1';
-- 2020/05/04 22:30:10

1行目は、TO_CHAR関数で値を取得しています。
6行目は、関数を使用せず値を取得しています。

TIMESTAMP型

TIMESTAMP型をもつテーブルを作成する

TIMESTAMP型をもつテーブルをcreate tableで作成します。

CREATE TABLE "HR"."SYAIN2" 
("ID"   NUMBER(6,0), 
"NAME"  VARCHAR2(20), 
"TIME1" TIMESTAMP,  
PRIMARY KEY ("ID")
);

4行目は、TIMESTAMP型です。桁数を指定しない場合はデフォルト値の6で設定されます。桁数は秒の小数部を意味します。

以下のテーブルが作成されました。

SYAIN1テーブル
項目名 データ型
id NUMBER(6,0)
name VARCHAR2(20)
TIME1 TIMESTAMP (6)

TIMESTAMP型の桁数が(6)になっています。

TIMESTAMP型の項目にinsertする

上記テーブルに対してinsert文でデータを登録します。

insert into syain2
(id,name,time1)
values (1,'鈴木',TO_TIMESTAMP('2020/05/04 22:30:10.123', 'YYYY-MM-DD HH24:MI:SS.FF'));

insert into syain2
(id,name,time1)
values (2,'田中','2020/05/04 22:45:15.250');

insert into syain2
(id,name,time1)
values (3,'佐藤','20200504 23:00:05.399');

insert into syain2
(id,name,time1)
values (4,'竹田',TO_TIMESTAMP('20200504 23:15:25.123456', 'YYYY-MM-DD HH24:MI:SS.FF'));

3行目は、TO_TIMESTAMP関数を使用してTIMESTAMP型のカラムに登録しています。HH24は0~23の24時間表記です。MIは分で0~59です。SSは秒で0~59です。FFは秒の小数部です。
7行目は、TO_TIMESTAMP関数を使わず文字列のままですが登録できます。
11行目は、年月日の区切りのスラッシュを入れていませんが登録できます。
15行目は、秒の小数部の桁数を6桁にしましたが3桁までしか登録されません。

結果

登録後のテーブルは、以下のとおりです。

syain1テーブル
id name time1
1 鈴木 2020/05/04 22:30:10.123
2 田中 2020/05/04 22:45:15.250
3 佐藤 2020/05/04 23:00:05.399
4 竹田 2020/05/04 23:15:25.123

TIMESTAMP型の項目をselect する

SELECT TO_CHAR(time1, 'YYYY-MM-DD HH24:MI:SS.FF')
FROM syain2
where id = '1';
-- 2020-05-04 22:30:10.123000

SELECT time1
FROM syain2
where id = '1';
-- 2020/05/04 22:30:10.123

1行目は、TO_CHAR関数で値を取得しています。秒の小数部は6桁表示されます。
6行目は、関数を使用せず値を取得しています。秒の小数部は3桁表示されます。

関連の記事

Oracle DDL文を作成するサンプル

△上に戻る