По-долу са дадени 4 функции, които ви позволяват да върнете частта от секундите от времева стойност в MariaDB.
SECOND()
Функция
SECOND()
функцията връща секундната част от даден TIME
или DATETIME
изразяване. Той приема един аргумент, който е времето, от което искате да извлечете секундите.
Пример:
SELECT SECOND('03:45:30');
Резултат:
+-------------------+| SECOND('03:45:30') |+-------------------+| 30 |+-------------------+
TIME
стойностите могат да бъдат в диапазона '-838:59:59.999999'
до '838:59:59.999999'
. Това включва микросекунди, но SECOND()
връща само частта от секундите (има MICROSECOND()
функция за връщане на микросекунди).
TIME
стойностите също могат да бъдат отрицателни. В такива случаи SECOND()
връща положителна стойност.
Ето отрицателна времева стойност с микросекунди:
SELECT SECOND('-838:59:59.999999');
Резултат:
+----------------------------+| SECOND('-838:59:59.999999') |+----------------------------+| 59 |+----------------------------+
Частта от секундите се извлича според очакванията.
EXTRACT()
Функция
EXTRACT()
функцията ви позволява да извлечете определена единица от стойността за дата/час. Следователно можете да го използвате, за да извлечете секундите (както и други единици) от стойността на времето.
Пример:
SELECT EXTRACT(SECOND FROM '10:47:01');
Резултат:
+--------------------------------+| ЕКСТРАКТ(ВТОРИ ОТ '10:47:01') |+--------------------------------+| 1 |+--------------------------------+
TIME_FORMAT()
Функция
TIME_FORMAT()
функцията ви позволява да форматирате времева стойност въз основа на низ за форматиране. Форматният низ указва как трябва да се форматира времето.
Следователно можете да използвате тази функция, за да върнете секундите (както и минутите и часовете) от времето.
%s
и %S
И двата спецификатора на формат връщат секундите с две цифри:
SELECT
TIME_FORMAT('10:07:30', '%s'),
TIME_FORMAT('10:07:30', '%S');
Резултат:
+------------------------------+-------------- -----------------+| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |+------------------------------+- ------------------------------+| 30 | 30 |+----------------------------------+-------------- ----------------+
Можете също да използвате $f
спецификатор на формат за връщане на шестцифрени подсекунди:
SELECT
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";
Резултат:
<пред>+--------------+-----------+| Микросекунди | И двете |+--------------+-----------+| 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', '%s');
Резултат:
+------------------------------------+| DATE_FORMAT('2023-01-01 10:07:30', '%s') |+---------------------------- --------------+| 30 |+--------------------------------------------------+
Подаване само на TIME
стойност не работи с тази функция:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';
Резултат:
+------+| %s |+------+| 00 |+------+