TIMESTAMPDIFF スカラー関数
2 つのタイム・スタンプ間の差に基づいて、 最初の引数によって定義されたタイプのインターバル数の見積もりが戻されます。
スキーマは SYSIBM です。LEFT 関数の SYSFUN バージョンは引き続き使用可能です。
- numeric-expression
- 組み込み INTEGER または SMALLINT データ・タイプの値を戻す式。有効な値は次の表に定義されているインターバルを表します。
表 1. インターバルの有効値 値 インターバル 1 マイクロ秒 2 秒 4 分 8 時間 16 日 32 週 64 月 128 四半期 256 年 - string-expression
- 組み込み CHAR または VARCHAR データ・タイプの値を戻す式。この値は、2 つのタイム・スタンプの減算を行い、その結果を CHAR に変換した結果となることが予想されます。
値が CHAR データ・タイプでも VARCHAR データ・タイプでもない場合、その値は関数を評価する前に暗黙的に VARCHAR にキャストされます。Unicode データベースでは、指定した引数が GRAPHIC ストリングであると、
まず文字ストリングに変換されてから、関数が実行されます。
正/負符号がある場合、これはストリングの先頭文字です。 以下の表では、文字ストリング持続期間のエレメントを説明します。
関数の結果として、2 番目の引数と符号が同じ INTEGER が生成されます。 結果は NULL になる可能性があります。引数が NULL である場合、その結果は NULL 値になります。
戻り値は、以下の表に示されているように、インターバルごとに決定されます。
| 結果として生成されるインターバル | 期間エレメントを使用した計算 |
|---|---|
| 年 | 年 |
| 四半期 | (月 + (年 * 12)) / 3 の整数値 |
| 月 | 月 + (年 * 12) |
| 週 | ((日 + (月 * 30)) / 7) + (年 * 52) の整数値 |
| 日 | 日 + (月 * 30) + (年 * 365) |
| 時間 | 時 + ((日 + (月 * 30) + (年 * 365)) * 24) |
| 分 (期間の絶対値は 40850913020759.999999 を超えてはなりません) | 分 + (時間 +((日 + (月 * 30) + (年 * 365)) *24))*60 |
| 秒 (期間の絶対値は 680105031408.000000 より小さくなければなりません) | 秒 + (分 + (時間 +((日 + (月 *30) + (年 * 365))*24))*60 )*60 |
| マイクロ秒 (期間の絶対値は 3547.483648 より小さくなければなりません) | マイクロ秒 + (秒 + (分 * 60)) * 1000000 |
以下の前提事項が、差の見積もりに使用されます。
- 1 年は 365 日である。
- 1 カ月は 30 日である。
- 1 日は 24 時間である。
- 1 時間は 60 分である。
- 1 分は 60 秒である。
上記の前提は、2 番目の引数の情報を最初の引数で指定されたインターバル・タイプに変換する際に使用されます。 戻される見積もりが、日数によって異なる場合があります。 例えば、 '1997-03-01-00.00.00' と '1997-02-01-00.00.00' の差の日数 (インターバル 16) が要求された場合、 結果は 30 になります。 これは、タイム・スタンプ相互間の差は 1 カ月であり、 1 カ月は 30 日であるという前提が適用されるからです。
例
以下の例は、2 つのタイム・スタンプにはさまれた分数である 4277 を戻します。
TIMESTAMPDIFF(4,CHAR(TIMESTAMP('2001-09-29-11.25.42.483219') -
TIMESTAMP('2001-09-26-12.07.58.065497')))