Nedenfor er 4 funktioner, der gør dig i stand til at returnere sekunddelen fra en tidsværdi i MariaDB.
SECOND()
Funktion
SECOND()
funktion returnerer sekunddelen af en given TIME
eller DATETIME
udtryk. Den accepterer ét argument, som er det tidspunkt, du vil udtrække sekunderne fra.
Eksempel:
SELECT SECOND('03:45:30');
Resultat:
+--------------------+ | SECOND('03:45:30') | +--------------------+ | 30 | +--------------------+
TIME
værdier kan være i området '-838:59:59.999999'
til '838:59:59.999999'
. Dette inkluderer mikrosekunder, men SECOND()
returnerer kun sekunderdelen (der er en MICROSECOND()
funktion til at returnere mikrosekunder).
TIME
værdier kan også være negative. I sådanne tilfælde SECOND()
returnerer en positiv værdi.
Her er en negativ tidsværdi med en mikrosekundersdel:
SELECT SECOND('-838:59:59.999999');
Resultat:
+-----------------------------+ | SECOND('-838:59:59.999999') | +-----------------------------+ | 59 | +-----------------------------+
Den sekundære del udtrækkes som forventet.
EXTRACT()
Funktion
EXTRACT()
funktionen giver dig mulighed for at udtrække en specificeret enhed fra dato/tidsværdien. Derfor kan du bruge den til at udtrække sekunderne (såvel som andre enheder) fra tidsværdien.
Eksempel:
SELECT EXTRACT(SECOND FROM '10:47:01');
Resultat:
+---------------------------------+ | EXTRACT(SECOND FROM '10:47:01') | +---------------------------------+ | 1 | +---------------------------------+
TIME_FORMAT()
Funktion
TIME_FORMAT()
funktion giver dig mulighed for at formatere en tidsværdi baseret på en formatstreng. Formatstrengen angiver, hvordan tiden skal formateres.
Du kan derfor bruge denne funktion til at returnere sekunderne (samt minutter og timer) fra tidspunktet.
%s
og %S
formatspecifikationer returnerer begge sekunder med to cifre:
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 også bruge $f
formatspecifikation for at returnere sekscifrede 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 accepterer et undersæt af formatstrengene, der kan bruges med DATE_FORMAT()
fungere. Se MariaDB Format Strings for en komplet liste over formatstrenge/specifikationer, der kan bruges med DATE_FORMAT()
. TIME_FORMAT()
Funktionen accepterer kun formatspecifikationer for timer, minutter og sekunder/undersekunder. Enhver anden formatangivelse resulterer i null
eller 0
bliver returneret.
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen giver dig mulighed for at formatere en dato eller dato-tidsværdi baseret på en formatstreng. Formatstrengen angiver, hvordan dato/klokkeslæt skal formateres.
Vi kan derfor bruge de samme formatspecifikationer, som vi brugte med TIME_FORMAT()
funktion i det foregående eksempel. Dog DATE_FORMAT()
accepterer ikke en TIME
værdi, så vi bliver nødt til at sende en DATETIME
værdi.
SELECT DATE_FORMAT('2023-01-01 10:07:30', '%s');
Resultat:
+------------------------------------------+ | DATE_FORMAT('2023-01-01 10:07:30', '%s') | +------------------------------------------+ | 30 | +------------------------------------------+
Sender kun en TIME
værdi virker ikke med denne funktion:
SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';
Resultat:
+------+ | %s | +------+ | 00 | +------+