Nedan finns 4 funktioner som gör att du kan returnera sekunddelen från ett tidsvärde i MariaDB.
SECOND()
Funktion
SECOND()
funktion returnerar sekunddelen av en given TIME
eller DATETIME
uttryck. Den accepterar ett argument, vilket är tiden du vill extrahera sekunderna från.
Exempel:
SELECT SECOND('03:45:30');
Resultat:
+--------------------+ | SECOND('03:45:30') | +--------------------+ | 30 | +--------------------+
TIME
värden kan ligga inom intervallet '-838:59:59.999999'
till '838:59:59.999999'
. Detta inkluderar mikrosekunder, men SECOND()
returnerar bara sekundersdelen (det finns en MICROSECOND()
funktion för att returnera mikrosekunder).
TIME
värden kan också vara negativa. I sådana fall, SECOND()
returnerar ett positivt värde.
Här är ett negativt tidsvärde med en mikrosekundsdel:
SELECT SECOND('-838:59:59.999999');
Resultat:
+-----------------------------+ | SECOND('-838:59:59.999999') | +-----------------------------+ | 59 | +-----------------------------+
Den andra delen extraheras som förväntat.
EXTRACT()
Funktion
EXTRACT()
funktionen låter dig extrahera en specificerad enhet från datum/tidsvärdet. Därför kan du använda den för att extrahera sekunderna (liksom andra enheter) från tidsvärdet.
Exempel:
SELECT EXTRACT(SECOND FROM '10:47:01');
Resultat:
+---------------------------------+ | EXTRACT(SECOND FROM '10:47:01') | +---------------------------------+ | 1 | +---------------------------------+
TIME_FORMAT()
Funktion
TIME_FORMAT()
funktionen låter dig formatera ett tidsvärde baserat på en formatsträng. Formatsträngen anger hur tiden ska formateras.
Du kan därför använda denna funktion för att returnera sekunderna (samt minuter och timmar) från tiden.
%s
och %S
formatspecifikationer returnerar båda sekunderna med två siffror:
SELECT
TIME_FORMAT('10:07:30', '%s'),
TIME_FORMAT('10:07:30', '%S');
Resultat:
+-------------------------------+-------------------------------+ | TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') | +-------------------------------+-------------------------------+ | 30 | 30 | +-------------------------------+-------------------------------+
Du kan också använda $f
formatspecifikation för att returnera sexsiffriga undersekunder:
SELECT
TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";
Resultat:
+--------------+-----------+ | Microseconds | Both | +--------------+-----------+ | 123456 | 30.123456 | +--------------+-----------+
TIME_FORMAT()
funktion accepterar en delmängd av formatsträngarna som kan användas med DATE_FORMAT()
fungera. Se MariaDB Format Strings för en fullständig lista över formatsträngar/specifikationer som kan användas med DATE_FORMAT()
. TIME_FORMAT()
Funktionen accepterar endast formatspecifikationer för timmar, minuter och sekunder/undersekunder. Alla andra formatspecifikationer resulterar i null
eller 0
returneras.
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen låter dig formatera ett datum- eller datumtidsvärde baserat på en formatsträng. Formatsträngen anger hur datum/tid ska formateras.
Vi kan därför använda samma formatspecifikationer som vi använde med TIME_FORMAT()
funktion i föregående exempel. Men DATE_FORMAT()
accepterar inte en TIME
värde, så vi måste skicka en DATETIME
värde.
SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');
Resultat:
+------------------------------------------+ | DATE_FORMAT('2023-01-01 10:07:30', '%s') | +------------------------------------------+ | 30 | +------------------------------------------+
Passar bara en TIME
värde fungerar inte med den här funktionen:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';
Resultat:
+------+ | %s | +------+ | 00 | +------+