TIMESTAMP 型の項目は、特定の瞬間を反映する 1 桁から 20 桁までの連続した単一バイトの数字です。各桁の意味は、項目を宣言したときに指定したマスクによって決定されます。
マスクを指定するときは、以下の文字を順に使用できます。
- yyyy
- 年を表す 4 桁の数字。範囲は 0000 から 9999 までです。
- MM
- 月を表す 2 桁の数字。範囲は 01 から 12 までです。
- dd
- 日を表す 2 桁の数字。範囲は 01 から 31 までです。
- HH
- 時を表す 2 桁の数字。範囲は 00 から 23 までです。
- mm
- 分を表す 2 桁の数字。範囲は 00 から 59 までです。
- ss
- 秒を表す 2 桁の数字。範囲は 00 から 59 までです。
- f
- それぞれが秒の小数部を表す 0 から 6 桁の数字。最初の数字は 10 分の 1 を表し、2 番目は 100 分の 1 を表し、以下同様です。
デフォルトのマスクは yyyyMMddHHmmss です。
DB2
® と (直接または JDBC によって) 対話する場合
または COBOL 用に生成する場合は、年 (
yyyy) から秒 (
ss) まですべてのコンポーネントを指定する必要があります。その他のコンテキストでは、次のことが当てはまります。
デフォルトのマスク (
yyyyMMddHHmmss) が有効で、項目が、
CICS® for z/OS® のような EBCDIC を使用するホスト環境にある場合、値の内部 16 進表記は、例えば次のようになります。
// 8:05:10 o'clock on 12 January 2005
F2 F0 F0 F5 F0 F1 F1 F2 F0 F8 F0 F5 F1 F0
デフォルトのマスク (yyyyMMddHHmmss) が有効で、項目が Windows® 2000 のような ASCII を使用するワークステーション環境にある場合、値の内部 16 進表記は、例えば次のようになります。
// 8:05:10 o'clock on 12 January 2005
32 30 30 35 30 31 31 32 30 38 30 35 31 30
TIMESTAMP 型の項目は、TIMESTAMP 型の項目または DATE 型、TIME 型、NUM 型、CHAR 型の項目と比較する (または相互に代入する) ことができます。しかし、無効な値を代入した場合は、開発時にエラーが発生します。以下に例を示します。
// 2 月 30 日は有効な日付でないので無効
myTS timestamp("yyyymmdd");
myTS = "20050230";
フル・マスクの先頭の文字が欠落している場合 (例えば、マスクが「dd」の場合)、EGL は、上位レベルの文字 (この例では「yyyyMM」) が、マシン・クロックに従って現在の瞬間を表すものと見なします。次の文を使用すると、2 月にランタイム・エラーが発生します。
// 2 月 30 日 という日付はないので無効
myTS timestamp("dd");
myTS = "30";
最後に、TIMESTAMP 型の項目は、リレーショナル・データベースとの間でデータの受け渡しができます。