В MariaDB, TIME()
е вградена функция за дата и час, която извлича частта от времето от даден израз за време или дата и час и я връща като низ.
Той приема един аргумент, който е стойността за час или дата и час, за които искате да извлечете часа.
Синтаксис
Синтаксисът е така:
TIME(expr)
Където expr
е изразът за час или дата и час, за който да се извлече времето.
Пример
Ето пример за демонстрация:
SELECT TIME('2030-02-01 10:30:45');
Резултат:
+----------------------------+| TIME('2030-02-01 10:30:45') |+----------------------------+| 10:30:45 |+----------------------------+
Времени стойности
Ето пример, който извлича времето от времева стойност:
SELECT TIME('10:30:45');
Резултат:
+-----------------+| TIME('10:30:45') |+-----------------+| 10:30:45 |+-----------------+
Микросекунди
Ето пример, който включва микросекунди:
SELECT TIME('2030-02-01 10:30:45.123456');
Резултат:
+----------------------------------+| TIME('2030-02-01 10:30:45.123456') |+-------------------------------- ---+| 10:30:45.123456 |+------------------------------------------------+
По-голямо работно време
TIME
стойностите могат да бъдат в диапазона '-838:59:59.999999'
до '838:59:59.999999'
.
Следователно часовата част може да бъде много по-висока от 23
:
SELECT TIME('578:30:45');
Резултат:
+------------------+| TIME('578:30:45') |+------------------+| 578:30:45 |+------------------+
Отрицателни времена
Отрицателните времена са валидни:
Пример
SELECT TIME('-578:30:45');
Резултат:
+-------------------+| TIME('-578:30:45') |+-------------------+| -578:30:45 |+-------------------+
Часове извън обхват
Стойности за време извън диапазона '-838:59:59.999999'
до '838:59:59.999999'
са ограничени до съответната граница и включват предупреждение.
Пример:
SELECT TIME('978:30:45');
Резултат (с помощта на вертикален изход):
+------------------+| TIME('978:30:45') |+------------------+| 838:59:59 |+------------------+1 ред в комплект, 1 предупреждение (0,003 сек)
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат (с помощта на вертикален изход):
+--------+------+---------------------------- ----------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ---------------+| Предупреждение | 1292 | Съкратена неправилна стойност на времето:'978:30:45' |+---------+------+------------------- ----------------------------------+
Текуща дата
Можем да предадем NOW()
като аргумент datetime за използване на текущото време:
SELECT
NOW(),
TIME(NOW());
Резултат:
<пред>+---------------------+------------+| СЕГА() | ВРЕМЕ(СЕГА()) |+---------------------+------------+| 27.05.2021 10:24:23 | 10:24:23 |+---------------------+------------+Невалидни аргументи
Когато се подаде невалиден аргумент, TIME()
връща null
с предупреждение:
SELECT TIME('Ten Thirty AM');
Резултат:
<пред>+-----------------------+| TIME('Десет и тридесет сутринта') |+-----------------------+| NULL |+-----------------------+1 ред в комплект, 1 предупреждение (0,002 сек.)Проверете предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ----------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ---------+| Предупреждение | 1292 | Неправилна стойност на времето:'Ten Thirty AM' |+---------+------+--------------------- -----------------+
Липсващ аргумент
Извикване на TIME()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT TIME();
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1
И още един пример:
SELECT TIME('10:30:45', '06:30:45');
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до „06:30:45“)“ на ред 1