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 によって) 対話する場合は、年 (
yyyy) から秒 (
ss) まですべてのコンポーネントを指定する必要があります。
その他のコンテキストでは、次のことが当てはまります。
デフォルトのマスク (
yyyyMMddHHmmss) が有効で、項目が、 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 型の項目は、リレーショナル・データベースとの間でデータの受け渡しができます。