По-долу са 4 функции, които ви позволяват да върнете микросекундната част от времева стойност в MariaDB.
MICROSECOND()
Функция
MICROSECOND()
функцията връща микросекундната част от даден TIME
или DATETIME
изразяване. Той приема един аргумент, който е времето, от което искате да извлечете микросекундите.
Пример:
SELECT MICROSECOND('10:45:30.123456');
Резултат:
+--------------------------------+| MICROSECOND('10:45:30.123456') |+--------------------------------+| 123456 |+--------------------------------+
TIME
стойностите могат да бъдат в диапазона '-838:59:59.999999'
до '838:59:59.999999'
.
TIME
стойностите също могат да бъдат отрицателни. В такива случаи MICROSECOND()
връща положителна стойност.
Ето отрицателна времева стойност с микросекунди:
SELECT MICROSECOND('-838:59:59.999999');
Резултат:
+---------------------------------+| МИКРОСЕКУНДА('-838:59:59.999999') |+----------------------------------+| 999999 |+---------------------------------+
Частта от микросекундите се извлича според очакванията.
EXTRACT()
Функция
EXTRACT()
функцията ви позволява да извлечете определена единица от стойността за дата/час. Следователно можете да го използвате, за да извлечете микросекундите (както и други единици) от стойността на времето.
Пример:
SELECT EXTRACT(MICROSECOND FROM '10:45:30.123456');
Резултат:
+----------------------------------------------------+ | ИЗВЛЕЧВАНЕ (МИКРОСЕКУНДА ОТ '10:45:30.123456') |+----------------------------------- ---------+| 123456 |+------------------------------------------+предварително>
TIME_FORMAT()
Функция
TIME_FORMAT()
функцията ви позволява да форматирате времева стойност въз основа на низ за форматиране. Форматният низ указва как трябва да се форматира времето.Следователно можете да използвате тази функция, за да върнете микросекундите (както и часове, минути и секунди) от времето.
%f
спецификаторът на формат връща микросекундите:SELECT TIME_FORMAT('10:07:30.003456', '%f');
Резултат:
+----------------------------------------+| TIME_FORMAT('10:07:30.003456', '%f') |+-------------------------------- -----+| 003456 |+----------------------------------------+Можете също да използвате
$s
или$S
спецификатор на формат за връщане на секундната част:SELECT TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds", TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds", TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";
Резултат:
<пред>+--------+--------------+-----------+| Секунди | Микросекунди | И двете |+--------+--------------+----------+| 30 | 123456 | 30.123456 |+--------+--------------+-----------+
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 10:07:30.007123', '%f');
Резултат:
+------------------------------------------------------- ---+| DATE_FORMAT('2023-01-01 10:07:30.007123', '%f') |+---------------------------- ---------------------+| 007123 |+-------------------------------------------------- --+
Подаване само на TIME
стойност не работи с тази функция:
SELECT DATE_FORMAT('10:07:30.007123', '%f');
Резултат:
+----------------------------------------+| DATE_FORMAT('10:07:30.007123', '%f') |+-------------------------------- -----+| NULL |+----------------------------------------+1 ред в комплект, 1 предупреждение ( 0,003 сек)
Нека видим предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ----------------+| Ниво | Код | Съобщение |+--------+------+------------------------------ ---------------+| Предупреждение | 1292 | Неправилна стойност за дата и час:'10:07:30.007123' |+---------+------+------------------- -------------------------+