По-долу са дадени 4 функции, които ви позволяват да върнете часа от времева стойност в MariaDB.
HOUR()
Функция
HOUR()
функцията връща часа за даден TIME
или DATETIME
изразяване. Той приема един аргумент, който е времето, от което искате да извлечете часа.
Пример:
SELECT HOUR('03:45:30');
Резултат:
+-----------------+| ЧАС('03:45:30') |+------------------+| 3 |+------------------+
За стойности за времето от деня той връща часа като число в диапазона 0
до 23
. Въпреки това, диапазонът от TIME
стойностите могат да бъдат много по-големи и следователно върнатата стойност може да бъде много по-висока от 23
. По-конкретно, TIME
стойностите могат да бъдат в диапазона '-838:59:59.999999'
до '838:59:59.999999'
.
Ето пример с по-голяма част от часа:
SELECT HOUR('838:45:30');
Резултат:
+------------------+| ЧАС('838:45:30') |+-------------------+| 838 |+------------------+
Ако времето е извън приетия диапазон за TIME
стойности, връщаната стойност е 838
с предупреждение.
TIME
стойностите също могат да бъдат отрицателни. В такива случаи HOUR()
връща положителна стойност.
EXTRACT()
Функция
EXTRACT()
функцията ви позволява да извлечете определена единица от стойността за дата/час. Следователно можете да го използвате, за да извлечете часа (както и други единици) от стойността на времето.
Пример:
SELECT EXTRACT(HOUR FROM '10:47:01');
Резултат:
+-------------------------------+| ЕКСТРАКТ(ЧАС ОТ '10:47:01') |+------------------------------+| 10 |+----------------------------------+
TIME_FORMAT()
Функция
TIME_FORMAT()
функцията ви позволява да форматирате времева стойност въз основа на низ за форматиране. Форматният низ указва как трябва да се форматира времето.
Следователно можете да използвате тази функция, за да върнете часа (както и минутите и секундите) от времето. Има различни опции за връщане на часа.
Ето пример, който връща часа в различни форми:
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l';
Резултат:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Ето описание на всеки от тези спецификатори на формат:
Определител на формата | Описание |
---|---|
%H | Час с 2 цифри между 00-23. |
%h | Час с 2 цифри между 01-12. |
%I | Час с 2 цифри между 01-12. |
%k | Час с 1 цифра между 0-23. |
%l | Час с 1 цифра между 1-12. |
TIME_FORMAT()
функцията приема подмножество от форматни низове, които могат да се използват с DATE_FORMAT()
функция. Вижте MariaDB Format Strings за пълен списък с низове/спецификатори на формат, които могат да се използват с DATE_FORMAT()
. TIME_FORMAT()
функцията приема спецификатори на формат само за часове, минути и секунди. Всеки друг спецификатор на формат води до null
или 0
се връща.
DATE_FORMAT()
Функция
DATE_FORMAT()
функцията ви позволява да форматирате стойност на дата или дата и час въз основа на низ за форматиране. Форматният низ указва как трябва да се форматира датата/часът.
Следователно можем да използваме същите спецификатори на формат, които използвахме с TIME_FORMAT()
функция в предишния пример. Въпреки това, DATE_FORMAT()
не приема TIME
стойност, така че ще трябва да предадем DATETIME
стойност.
SELECT
DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';
Резултат:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Подаване само на TIME
value не го намалява съвсем с тази функция:
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l';
Резултат:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| NULL | NULL | NULL | NULL | NULL |+------+------+------+------+------+1 ред в комплект, 5 предупреждения (0,000 сек)предварително>Показване на предупрежденията:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ---------+| Ниво | Код | Съобщение |+--------+------+------------------------------ --------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' || Предупреждение | 1292 | Неправилна стойност за дата и час:'18:45:30' |+--------+------+------------------- ------------------+