DECIMAL(x)およびDECIMAL(x,y)
長さ: ネットワークでは1、2、4、8、16バイトのいずれか、メインフレームではパック10進数
説明: 128ビットの2倍精度、浮動小数点
PERIODデータ型指定
- BEGIN(開始要素)
- END(終了要素)
- PERIOD(DATE)
- PERIOD(TIME[(n)])
- PERIOD(TIME[(n)] WITH TIME ZONE)
- PERIOD(TIMESTAMP[(n)])
- PERIOD(TIMESTAMP[(n)] WITH TIME ZONE)
PERIODデータ タイプの詳細については、Teradata Vantage™ - データ型およびリテラル, B035-1143を参照してください。
NULLIFのパフォーマンス
NULLIF句を数多く使用すると、Teradata TPumpを実行しているシステムでのCPU使用量が大幅に増加する場合があります。このCPU使用量の増加により、ジョブ実行の所要時間が増大する場合があります。
- LAYOUT内のFILLERコマンド
- 入力位置のギャップまたはオーバーラップ
- 連結フィールド
- DROP句
Teradata TPumpを実行しているシステムでのCPU使用量の増大を回避するためには、NULLIF式の処理をデータベースに譲渡します。
例1
次のように指定する代わりに、
... .FIELD fc * CHAR(5) NULLIF fc = 'empty'; .FIELD fi * INTEGER NULLIF fi = 0; ... .DML LABEL ins; INSERT INTO tbl1 VALUES(...,:fc,:fi,...);
次のように指定します。
... .FIELD fc * CHAR(5); .FIELD fi * INTEGER; ... .DML LABEL ins; INSERT INTO tbl1 VALUES(...,NULLIF(:fc,'empty'),NULLIF(:fi,0),...);
例2
次の例のような、より複雑な状況では、
... .FIELD fs * CHAR(1) ; .FIELD fc * CHAR(5) NULLIF (fs <> 'M') AND (fs <> 'F'); .FIELD fi * INTEGER NULLIF fi < 0; ... .DML LABEL ins; INSERT INTO tbl2 VALUES(...,:fs,:fc,:fi,...);
次のように指定します。
... .FIELD fs * CHAR(1) ; .FIELD fc * CHAR(5); .FIELD fi * INTEGER; ... .DML LABEL ins; INSERT INTO tbl2 VALUES(...,:fs, CASE WHEN (:fs = 'M') OR (:fs = 'F') THEN :fc ELSE NULL END, CASE WHEN (:fi >= 0) THEN :fi ELSE NULL END,...);
ANSI/SQLのDateTimeデータ型の使用
DATEFORMコマンドを使用してDATEデータ型としてANSIDATEを指定した場合、各DATEフィールドは内部的にCHAR(10)フィールドへと変換されます。Teradata TPumpのFIELDコマンド内で列名およびフィールド名を指定するためには、ANSI/SQLのDateTimeの、TIME、TIMESTAMP、INTERVALの各データ型を、すべて固定長のCHARデータ型へと変換しなければなりません。
次の表に、ANSI/SQL DateTime指定の使用方法を示します。
データ型 | 変数の定義 | 変換例 |
---|---|---|
TIME TIME (n) |
n = 小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(8 +n + (n> 0の場合は1、それ以外の場合は0)) 書式(n = 0): hh:mm:ss 例: 11:37:58 書式(n = 4): hh:mm:ss.ssss 例: 11:37:58.1234 |
TIMESTAMP TIMESTAMP (n) |
n = 小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(19 + n + (n > 0の場合は1、それ以外の場合は0)) yyyy-mm-dd hh:mm:ss 1998-09-04 11:37:58 yyyy-mm-dd hh:mm:ss.ssss 1998-09-04 11:37:58.1234 |
TIME WITH TIME ZONE TIME (n) WITH TIME ZONE |
n = 小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(14 + n + (n > 0の場合は1、それ以外の場合は0)) hh:mm:ss{±}hh:mm 11:37:58-08:00 hh:mm:ss.ssss{±}hh:mm 11:37:58.1234-08:00 |
TIMESTAMP WITH TIME ZONE TIMESTAMP (n) WITH TIME ZONE |
n = 小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(25 + n+ (n > 0の場合は1、それ以外の場合は0)) yyyy-mm-dd hh:mm:ss{±}hh:mm 1998-09-24 11:37:58+07:00 yyyy-mm-dd hh:mm:ss.ssss{±}hh:mm 1998-09-24 11:37:58.1234+07:00 |
INTERVAL YEAR INTERVAL YEAR (n) |
n = 桁数 有効な値: 1-4 デフォルト=2 |
CHAR(n+1) yy 98 yyyy 1998 |
INTERVAL YEAR TO MONTH INTERVAL YEAR (n) TO MONTH |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n+ 3) yy-mm 98-12 yyyy-mm 1998-12 |
INTERVAL MONTH INTERVAL MONTH (n) |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n) mm 12 mmmm 0012 |
INTERVAL DAY INTERVAL DAY (n) |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n) dd 31 dddd 0031 |
INTERVAL DAY TO HOUR INTERVAL DAY (n) TO HOUR |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n + 3) dd hh 31 12 dddd hh 0031 12 |
INTERVAL DAY TO MINUTE INTERVAL DAY (n) TO MINUTE |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n + 6) dd hh:mm 31 12:59 dddd hh:mm 0031 12:59 |
INTERVAL DAY TO SECOND INTERVAL DAY (n) TO SECOND INTERVAL DAY TO SECOND (m) INTERVAL DAY (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト= 2 m=小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR( n + 9 + m + (m > 0の場合は1、それ以外の場合は0)) dd hh:mm:ss 31 12:59:59 dddd hh:mm:ss 0031 12:59:59:59.1234 |
INTERVAL HOUR INTERVAL HOUR (n) |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n) hh 12 hhhh0012 |
INTERVAL HOUR TO MINUTE INTERVAL HOUR (n) TO MINUTE |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n + 3) hh:mm 12:59 hhhh:mm 0012:59 |
INTERVAL HOUR TO SECOND INTERVAL HOUR (n) TO SECOND INTERVAL HOUR TO SECOND (m) INTERVAL HOUR (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト= 2 m=小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(n + 6 + m + (m > 0の場合は1、それ以外の場合は0)) hh:mm:ss 12:59:59 hhhh:mm:ss.ssss 0012:59:59.1234 |
INTERVAL MINUTE INTERVAL MINUTE (n) |
n = 桁数 有効な値: 1-4 デフォルト= 2 |
CHAR(n) mm 59 mnnm 0059 |
INTERVAL MINUTE TO SECOND INTERVAL MINUTE (n) TO SECOND INTERVAL MINUTE TO SECOND (m) INTERVAL MINUTE (n) TO SECOND (m) |
n = 桁数 有効な値: 1-4 デフォルト= 2 m=小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(n + 3 + m + (m > 0の場合は1、それ以外の場合は0)) mm:ss 59:59 mm:ss.ssss 0059:59.1234 |
INTERVAL SECOND INTERVAL SECOND (n) INTERVAL SECOND (n,m) |
n = 桁数 有効な値: 1-4 デフォルト= 2 m=小数点以下の桁数 有効な値: 0-6 デフォルト= 6 |
CHAR(n + m + (m > 0の場合は1、それ以外の場合は0)) ss 59 ssss.ssss 0059.1234 |