В 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“