2 つのタイムスタンプ間の間隔を指定されたタイプの整数値で返す、スカラ数値関数です。
Synopsis
{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}
引数
interval-type 返り値が表示される時刻/日付間隔のタイプ。
startdate TIMESTAMP 値式。
enddate startdate と比較される TIMESTAMP 値式。
概要
TIMESTAMPDIFF 関数は、指定された間隔 (秒、日、週など) に対して、与えられた 2 つのタイムスタンプの差を返します (つまり、一方のタイムスタンプからもう一方を引きます)。返される値は、2 つのタイムスタンプ間の間隔数を示す INTEGER です (enddatestartdate より前の場合、TIMESTAMPDIFF は負の INTEGER 値を返します)。1000 分の 1 秒 (0.001) でカウントして、小秒数の間隔を返すことができます。
interval-type パラメータは、以下のタイムスタンプ間隔のいずれかになります。
TIMESTAMPDIFFDATEDIFF では四半期 (3 カ月の間隔) は処理されません。
タイムスタンプ・パラメータ値には、同じ論理形式と外部形式があります。文字列の形式は 'yyyy-mm-dd hh:mm:ss' です。
TIMESTAMPDIFF は { } 括弧構文による ODBC スカラ関数としてのみ使用できる点に注意してください。同様の日付/時刻の比較の演算は、DATEDIFF 汎用関数を使用して、タイムスタンプで実行できます。
範囲と値のチェック
TIMESTAMPDIFF は、入力値に対して以下のチェックを実行します。値がチェックに失敗した場合は、NULL 文字列が返されます。
以下の例は、後者のタイムスタンプ (1999-12-20 12:00:00) が、前者のタイムスタンプよりも 7 か月分大きいので、7 を返します。
SELECT DISTINCT {fn TIMESTAMPDIFF(SQL_TSI_MONTH,
     '1999-5-19 00:00:00','1999-12-20 12:00:00')}
FROM Sample.Person
以下の例は、後者のタイムスタンプ ('12:00:00') が、前者のタイムスタンプ (02:34:12) よりも 566 分大きいので、566 を返します。
SELECT DISTINCT {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,
     '02:34:12','12:00:00')}
FROM Sample.Person
関連項目
TIMESTAMPADD DATEDIFF