MySQL TIMEDIFF()
функцията връща разликата между две стойности за време или дата и час.
Начинът, по който работи, е, че предоставяте двете стойности за сравнение и TIMEDIFF()
изважда втората стойност от първата, след което връща резултата като стойност за време.
Синтаксис
Синтаксисът е така:
TIMEDIFF(expr1,expr2)
Където expr1
и expr2
са двете стойности за сравнение. Връщаната стойност е 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 | +-----------------------------------+
Отрицателна разлика във времето
Ако втората стойност е по-голяма от първата, ще получите отрицателна стойност за разликата във времето. Това е напълно валидно.
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 | +--------------------------------------------------------+
Имайте предвид, че и двата аргумента трябва да са от един и същи тип. Така че не можете да имате стойност за време за първата и стойност за дата и час за втората (и обратно).
Също така имайте предвид, че типът данни за времето може да бъде само в диапазона -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)
В този случай получаваме неправилен резултат и предупреждение.