MySQLのTIMEDIFF()
関数は、2つの時刻または日時の値の差を返します。
それが機能する方法は、比較する2つの値と、TIMEDIFF()
を提供することです。 最初の値から2番目の値を減算し、その結果を時間値として返します。
構文
構文は次のようになります:
TIMEDIFF(expr1,expr2)
ここで、expr1
およびexpr2
比較する2つの値です。戻り値はexpr2
です。 expr1
から減算 。
基本的な例
実例を示します。
SELECT TIMEDIFF('11:35:25', '10:35:25');
結果:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
経過時間
時間の値は経過時間を表すことができるため、24時間未満に限定されません。
SELECT TIMEDIFF('500:35:25', '10:35:25');
結果:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
負の時間差
2番目の値が最初の値よりも大きい場合、時間差に対して負の値が得られます。これは完全に有効です。
SELECT TIMEDIFF('10:35:25', '500:35:25');
結果:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
日時の値
引数として日時の値を使用する例を次に示します。
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
結果:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
両方の引数は同じタイプでなければならないことに注意してください。したがって、最初の時刻の値と2番目の日時の値を設定することはできません(その逆も同様です)。
また、時間データ型は -838:59:59の範囲にのみ存在できることに注意してください。 838:59:59 。したがって、以下は機能しません。
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
結果:
+--------------------------------------------------------+ | TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | -838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)
この場合、誤った結果と警告が表示されます。