I MariaDB, MICROSECOND()
er en indbygget dato- og tidsfunktion, der returnerer mikrosekunderdelen af et givet tidsudtryk.
Den accepterer ét argument, som er det tidspunkt, du vil udtrække mikrosekunderne fra.
Sekunderne returneres som et tal i området 0
til 999999
.
Syntaks
Syntaksen ser sådan ud:
MICROSECOND(time)
Hvor time
er tidsudtrykket at få mikrosekunderne fra.
Eksempel
Her er et eksempel:
SELECT MICROSECOND('10:30:45.123456');
Resultat:
+--------------------------------+ | MICROSECOND('10:30:45.123456') | +--------------------------------+ | 123456 | +--------------------------------+
Følgende tidsudtryk inkluderer ikke eksplicit mikrosekunder:
SELECT MICROSECOND('10:30:45');
Resultat:
+-------------------------+ | MICROSECOND('10:30:45') | +-------------------------+ | 0 | +-------------------------+
Så resultatet er 0
.
Dato-tidsværdier
Det fungerer også med datetime-værdier:
SELECT MICROSECOND('2030-02-01 10:30:45.123456');
Resultat:
+-------------------------------------------+ | MICROSECOND('2030-02-01 10:30:45.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+
Datoværdier
At passere en dato uden et tidspunkt returnerer 0
, sammen med en advarsel.
Eksempel:
SELECT MICROSECOND('2025-10-31');
Resultat:
+---------------------------+ | MICROSECOND('2025-10-31') | +---------------------------+ | 0 | +---------------------------+ 1 row in set, 1 warning (0.001 sec)
Vi kan se advarslen ved at køre følgende kode:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Aktuel dato
Vi kan sende NOW()
som datetime-argument for at bruge det aktuelle klokkeslæt:
SELECT
NOW(6),
MICROSECOND(NOW(6));
Resultat:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
I dette tilfælde specificerede jeg det NOW()
skal returnere en brøkpræcision på 6
(hvilket får den til at returnere mikrosekunder).
Her er den igen med en lavere præcision:
SELECT
NOW(3),
MICROSECOND(NOW(3));
Resultat:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Ugyldige argumenter
Når et ugyldigt tidsargument sendes, MICROSECOND()
returnerer null
:
SELECT MICROSECOND('10:75:00.123456');
Resultat:
+--------------------------------+ | MICROSECOND('10:75:00.123456') | +--------------------------------+ | NULL | +--------------------------------+
Manglende argument
Kalder MICROSECOND()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT MICROSECOND();
Resultat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Og endnu et eksempel:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123');
Resultat:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45.123')' at line 1