16.20 - TIMESTAMPデータ型 - Teradata Vantage NewSQL Engine

Teradata Vantage™ データ タイプおよびリテラル

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

目的

フィールドをTIMESTAMP値として識別します。

構文



fractional_seconds_precision
SECONDフィールドの小数部の有効桁数を表わす1桁の数字。
fractional_seconds_precisionの値の範囲は、0から6までです。
デフォルトの精度は6です。
attributes
適切なデータ型、列記憶、または列制約属性。
特定の情報については、主なデータ型属性および記憶属性と制約属性を参照してください。

ANSI準拠

TIMESTAMPは、非ANSI規格です。Teradata DatabaseはUTCでTIMESTAMP値を格納します。

TIMESTAMPの内部表現

概念的には、TIMESTAMPはグレゴリオ暦で正しく定義された6つのフィールドで構成されたレコードとして扱われます。

フィールド名 最小値 最大値 格納形式
SECOND 00.000000 61.999999

この値は、時計に追加できるうるう秒を考慮に入れます。

INTEGER (DECIMAL(8,6))
YEAR 0001 9999 SMALLINT
MONTH 01 12 BYTEINT
DAY 01 28、29、30、または31

(月と年に対応)

BYTEINT
HOUR 00 23 BYTEINT
MINUTE 00 59 BYTEINT

レコードは数値フィールドで構成されていますが、数値として処理されません。

内部格納形式の長さは10バイトです。

TIMESTAMPの外部表現

TIMESTAMPタイプは、レコードおよび標識モードでCHARACTERデータとしてインポートおよびエクスポートされます。その際、ANSI形式文字列とサイト定義のクライアント文字セットが使用されます。

fractional_seconds_precisionの値 タイプ 形式
0 CHAR(19) 'yyyy-mm-dd hh:mi:ss'
n

nは通常1~6

CHAR(20+n) 'yyyy-mm-dd hh:mi:ss.ss…'

次の表は、レコードおよび標識モードでTIMESTAMPタイプをエクスポートする方法を示すものです。

fractional_seconds_precisionの値 長さ
6 26 '1999-01-01 23:59:59.999999'
0 19 '1999-01-01 23:59:59'

TIMESTAMPの形式

TIMESTAMPの形式と形式の変更方法の詳細については、TIMEおよびTIMESTAMPの形式を参照してください。

TIMESTAMPの暗黙の変換と明示的な変換

割り当てや比較中に、Teradata DatabaseはCHARACTERタイプからTIMESTAMPタイプへの暗黙の変換を実行します。この変換は、CHARおよびVARCHARタイプでのみサポートされます。CLOBまたはCHAR/VARCHAR CHARACTER SET GRAPHICの文字データ型をTIMESTAMPに変換することはできません。

Teradata DatabaseはTIMESTAMPタイプからDATEタイプおよびTIMEタイプへの暗黙の変換も実行します。ただし、TIMESTAMPからTIMEへの暗黙の変換は、比較ではサポートされていません。

CASTを使用することにより、明示的にCHARACTERタイプをTIMESTAMPタイプに変換したり、TIMESTAMPタイプからDATEまたはTIMEタイプに変換することができます。

詳細については、<Teradata Vantage™ SQL関数、式、および述部、B035-1145>の「データ型の変換」を参照してください。

例: TIMESTAMPデータ型

以下に示すのは、クエリーの中でTIMESTAMPを使用した例です。

SELECT item, quantity, saletime
FROM sales
WHERE saletime > TIMESTAMP '2000-08-25 10:14:59'
AND saletime < TIMESTAMP '2000-08-25 10:30:01';

例: 2つのTIMESTAMP型の相違

2つのTIMESTAMPタイプの間の差は間隔タイプになります。

まず、テーブルを次のように定義します。

CREATE TABLE BillDateTime
(phone_no CHARACTER(10)
,start_time TIMESTAMP(0)
,end_time TIMESTAMP(0));

次に差を計算し、その結果の間隔単位としてDAY TO SECONDを指定します。

SELECT (end_time - start_time) DAY(4) TO SECOND
FROM BillDateTime;

DAY(4)により4桁の精度を指定しており、最大値は9999日(約27年)になります。結果は次のようになります。

5 16:49:20.340000

例: 2つのTIMESTAMP値の比較

次の例は、2つのTIMESTAMP数値を比較して、その差が30分未満かどうかを調べるものです。

まず、テーブルを次のように定義します。

CREATE TABLE PhoneTime
(phone_no CHARACTER(10)
,start_time TIMESTAMP(0)
,end_time TIMESTAMP(0));

2つのTIMESTAMPタイプの間の差は、間隔タイプになります。

SELECT phone_no
FROM PhoneTime
WHERE (end_time - start_time) DAY(4) TO MINUTE > INTERVAL '30' MINUTE;