TIMESTAMPDIFF スカラー関数
2 つのタイム・スタンプ間の差に基づいて、 最初の引数によって定義されたタイプのインターバル数の見積もりが戻されます。
スキーマは SYSIBM です。 LEFT 関数の SYSFUN バージョンは引き続き使用可能です。
- numeric-expression
- 組み込み INTEGER または SMALLINT データ・タイプの値を戻す式。 有効な値は次の表に定義されているインターバルを表します。
表 1. インターバルの有効値 値 間隔 1 マイクロ秒 2 秒 4 分 8 時間 16 日 32 週 64 月 128 四半期 256 年 ストリング式 - 組み込み 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 を超えてはなりません) | minutes + (hours+((days+(months*30)+(years*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')))