В MariaDB, MAKETIME()
е вградена функция за дата и час, която връща стойност за време въз основа на часовете, минутите и секундите, предоставени като аргументи.
Синтаксис
Синтаксисът е така:
MAKETIME(hour,minute,second)
Пример
Ето един пример:
SELECT MAKETIME(08, 30, 45);
Резултат:
+---------------------+| MAKETIME(08, 30, 45) |+---------------------+| 08:30:45 |+---------------------+
И още един:
SELECT MAKETIME(23, 8, 1);
Резултат:
+-------------------+| MAKETIME(23, 8, 1) |+-------------------+| 23:08:01 |+-------------------+
Обхвати
Ако hour
аргументът е извън диапазона -838
до 838
, стойността е съкратена с предупреждение.
Ако minute
или second
аргументите са извън диапазона 0
до 59
, резултатът е null
и се показва предупреждение (документацията на MariaDB посочва, че диапазонът е 0
до 60
, но това не е така в моите тестове. Освен това, документацията на MariaDB също така посочва, че диапазонът за стойностите на времето на MariaDB е '-838:59:59.999999'
до '838:59:59.999999'
).
Както и да е, ето пример за време със стойности, които са в горния край на техния приет диапазон:
SELECT MAKETIME(838, 59, 59.999999);
Резултат:
+------------------------------+| MAKETIME(838, 59, 59.999999) |+------------------------------+| 838:59:59.999999 |+------------------------------+
Тези стойности все още бяха в приетия диапазон и така получихме валидна времева стойност.
Невалидни минути и секунди
Ето какво се случва, когато надхвърлим приетия диапазон за minute
и second
аргументи:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Резултат:
+---------------------+---------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) |+---------------------+----------------- -----+| NULL | NULL |+---------------------+---------------------+1 ред в комплект, 1 предупреждение (0,001 сек.)
Резултатът е null
и за двете, с предупреждение.
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ -----------+| Предупреждение | 1292 | Съкратена неправилна стойност на секундите:'60' |+---------+-----+----------------------- ------------------+
Невалидни часове
Сега нека видим какво се случва, когато излезем извън приетия диапазон за hour
аргумент:
SELECT MAKETIME(900, 00, 00);
Резултат:
<пред>+-----------------------+| MAKETIME(900, 00, 00) |+-----------------------+| 838:59:59 |+-----------------------+1 ред в комплект, 1 предупреждение (0,000 сек)В този сценарий се връща стойност за време с часове, минути и секунди, подрязани до техния горен диапазон. Също така се връща предупреждение.
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ----------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ---------------+| Предупреждение | 1292 | Съкратена неправилна стойност на времето:'900:00:00' |+---------+------+------------------- ----------------------------------+
Липсващ аргумент
Извикване на MAKETIME()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT MAKETIME();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „MAKETIME“
И още един пример:
SELECT MAKETIME( 12, 1 );
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „MAKETIME“
Направете дата
Вижте също SEC_TO_TIME()
за конструиране на стойност за дата от няколко секунди.
Вижте също MAKEDATE()
за конструиране на стойност за дата от нейната година и ден от годината.