MariaDBでは、TIMEDIFF()
は、時間値として表される2つの時間値または日時値の差を返す組み込みの日付と時刻の関数です。
DATEDIFF()
に似ています 関数、ただしDATEDIFF()
の戻り値は日数で表されます。
TIMEDIFF()
2つの引数を受け入れます。どちらも時刻または日時の式です。次に、1回目から2回目を減算します。
構文
構文は次のようになります:
TIMEDIFF(expr1,expr2)
次に、expr1 - expr2
を返します。 。
例
次に例を示します:
SELECT TIMEDIFF('10:30:17', '1:10:10');
結果:
+---------------------------------+ | TIMEDIFF('10:30:17', '1:10:10') | +---------------------------------+ | 09:20:07 | +---------------------------------+
ここでも同じですが、時間の値が入れ替わっています:
SELECT TIMEDIFF('1:10:10', '10:30:17');
結果:
+---------------------------------+ | TIMEDIFF('1:10:10', '10:30:17') | +---------------------------------+ | -09:20:07 | +---------------------------------+
日時の値
日時の値を使用する例を次に示します。
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
結果:
+--------------------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') | +--------------------------------------------------------+ | 96:00:01 | +--------------------------------------------------------+
混合値タイプ
TIMEDIFF()
時間と日時の両方の値で機能します。両方の引数は同じタイプである必要があります。タイプを混在させると、null
になります 。
例:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');
結果:
+---------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '23:59:59') | +---------------------------------------------+ | NULL | +---------------------------------------------+
範囲外
時間値の範囲は'-838:59:59.999999'
です。 to '838:59:59.999999'
。結果がその範囲外の場合、戻り値は関連する範囲の上限であり、警告が返されます。
例:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');
結果:
+--------------------------------------------------------+ | TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') | +--------------------------------------------------------+ | 838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.003 sec)
警告を見てみましょう:
SHOW WARNINGS;
結果:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
現在の日付
ここでは、NOW()
を渡します 2番目の引数として:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW());
結果:
+---------------------+----------------------------------------+ | NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) | +---------------------+----------------------------------------+ | 2021-05-27 14:29:38 | -04:29:38 | +---------------------+----------------------------------------+
無効な引数
無効な引数が渡されると、TIMEEDIFF()
null
を返します :
SELECT TIMEDIFF('Homer', 'Simpson');
結果:
+------------------------------+ | TIMEDIFF('Homer', 'Simpson') | +------------------------------+ | NULL | +------------------------------+
引数がありません
TIMEDIFF()
の呼び出し 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT TIMEDIFF();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
そして:
SELECT TIMEDIFF('2030-05-21');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'