В MariaDB, TIME_FORMAT()
е вградена функция за дата и час, която форматира стойност за време според дадения форматен низ.
Работи подобно на DATE_FORMAT()
функция, с изключение на това, че форматният низ може да съдържа само спецификатори на формат за часове, минути и секунди.
Изисква два аргумента; времето и низа за формат.
Синтаксис
Синтаксисът е така:
TIME_FORMAT(time,format)
Където time
е стойността на времето и format
е форматният низ. Вижте MariaDB Format Strings за списък с приемливи спецификатори на формат. Както споменахме, приемат се само спецификаторите на формат за часове, минути и секунди. Всички други стойности връщат null
.
Пример
Ето един пример:
SELECT TIME_FORMAT('10:30:45', '%H %i %S');
Резултат:
+-------------------------------------+| TIME_FORMAT('10:30:45', '%H %i %S') |+---------------------------- --------+| 10 30 45 |+---------------------------------------+
Ето го отново, но този път предоставяме по-сложен форматен низ:
SELECT TIME_FORMAT(
'10:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Резултат:
+----------------------------------------+| Резултат |+----------------------------------------+| 10 часа, 30 минути и 45 секунди |+----------------------------------------------+
По-голямо работно време
TIME
стойностите могат да бъдат в диапазона '-838:59:59.999999'
до '838:59:59.999999'
.
Следователно часовата част може да бъде много по-висока от 23
:
SELECT TIME_FORMAT(
'810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Резултат:
+---------------------------------------+| Резултат |+---------------------------------------+| 810 часа, 30 минути и 45 секунди |+--------------------------------------- +
Отрицателни времеви стойности
Ето пример с отрицателна времева стойност:
SELECT TIME_FORMAT(
'-810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Резултат:
+---------------------------------------+| Резултат |+---------------------------------------+| -810 часа, 30 минути и 45 секунди |+------------------------------------- --+
Времена извън обхвата
Предоставянето на времева стойност извън диапазона обаче ще върне горната граница на този диапазон, заедно с предупреждение:
SELECT TIME_FORMAT(
'910:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Резултат:
+---------------------------------------+| Резултат |+---------------------------------------+| 838 часа, 59 минути и 59 секунди |+--------------------------------------- +1 ред в комплект, 1 предупреждение (0,003 сек.)
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ----------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ---------------+| Предупреждение | 1292 | Съкратена неправилна стойност на времето:'910:30:45' |+---------+------+------------------- ----------------------------------+
Невалидни аргументи
Когато се подадат невалидни аргументи, TIME_FORMAT()
връща null
с предупреждение:
SELECT TIME_FORMAT('Homer', 'Simpson');
Резултат:
+--------------------------------+| TIME_FORMAT('Омир', 'Симпсън') |+--------------------------------+| NULL |+--------------------------------+1 ред в комплект, 1 предупреждение (0,009 сек)предварително>Проверете предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- --+| Ниво | Код | Съобщение |+--------+------+------------------------------ -+| Предупреждение | 1292 | Неправилна стойност на времето:'Homer' |+---------+------+------------------------ -------+Невалиден форматен низ
Форматният низ може да съдържа само спецификатори на формат за часове, минути и секунди. Всички други спецификатори на формат водят до
null
се връща:SELECT TIME_FORMAT('10:30:45', '%M %W');
Резултат:
+---------------------------------+| TIME_FORMAT('10:30:45', '%M %W') |+------------------------------ ---+| NULL |+---------------------------------+Липсващ аргумент
Извикване на
TIME_FORMAT()
с грешен брой аргументи или без подаване на аргументи, води до грешка:SELECT TIME_FORMAT();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „TIME_FORMAT“И още един пример:
SELECT TIME_FORMAT('10:09:10');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „TIME_FORMAT“