В MariaDB, TIMEDIFF() е вградена функция за дата и час, която връща разликата между две стойности за време или стойности за дата и час, изразени като стойност за време.
Той е подобен на DATEDIFF() функция, с изключение на DATEDIFF() Връщаната стойност на 's се изразява в дни.
TIMEDIFF() приема два аргумента, като и двата са изрази за време или дата и час. След това изважда втория път от първия.
Синтаксис
Синтаксисът е така:
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' до '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 ред в комплект, 1 предупреждение (0,003 сек.)
Нека да разгледаме предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ------------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ -----------------+| Предупреждение | 1292 | Съкратена неправилна стойност на времето:'87624:00:01' |+---------+------+------------------- ----------------------------+
Текуща дата
Тук предаваме NOW() като втори аргумент:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW());
Резултат:
+---------------------+----------------------- ----------------+| СЕГА() | TIMEDIFF('2021-05-27 10:00:00', СЕГА()) |+---------------------+------- ---------------------------------+| 27.05.2021 14:29:38 | -04:29:38 |+---------------------+------------------- --------------------+ Невалидни аргументи
Когато се подадат невалидни аргументи, TIMEEDIFF() връща null :
SELECT TIMEDIFF('Homer', 'Simpson');
Резултат:
+------------------------------+| TIMEDIFF('Омир', 'Симпсън') |+------------------------------+| NULL |+------------------------------+ Липсващ аргумент
Извикване на TIMEDIFF() грешен брой аргументи или без предаване на аргументи води до грешка:
SELECT TIMEDIFF();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „TIMEDIFF“
И:
SELECT TIMEDIFF('2030-05-21');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „TIMEDIFF“