I MariaDB, MICROSECOND()
är en inbyggd datum- och tidsfunktion som returnerar mikrosekundersdelen av ett givet tidsuttryck.
Den accepterar ett argument, vilket är tiden du vill extrahera mikrosekunderna från.
Sekunderna returneras som ett tal i intervallet 0
till 999999
.
Syntax
Syntaxen ser ut så här:
MICROSECOND(time)
Där time
är tidsuttrycket att hämta mikrosekunderna från.
Exempel
Här är ett exempel:
SELECT MICROSECOND('10:30:45.123456');
Resultat:
+--------------------------------+ | MICROSECOND('10:30:45.123456') | +--------------------------------+ | 123456 | +--------------------------------+
Följande tidsuttryck inkluderar inte uttryckligen mikrosekunder:
SELECT MICROSECOND('10:30:45');
Resultat:
+-------------------------+ | MICROSECOND('10:30:45') | +-------------------------+ | 0 | +-------------------------+
Så resultatet är 0
.
Datetime-värden
Det fungerar också med datetime-värden:
SELECT MICROSECOND('2030-02-01 10:30:45.123456');
Resultat:
+-------------------------------------------+ | MICROSECOND('2030-02-01 10:30:45.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+
Datumvärden
Att passera ett datum utan tid returnerar 0
, tillsammans med en varning.
Exempel:
SELECT MICROSECOND('2025-10-31');
Resultat:
+---------------------------+ | MICROSECOND('2025-10-31') | +---------------------------+ | 0 | +---------------------------+ 1 row in set, 1 warning (0.001 sec)
Vi kan se varningen genom att köra följande kod:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Aktuellt datum
Vi kan skicka NOW()
som datetime-argument för att använda den aktuella tiden:
SELECT
NOW(6),
MICROSECOND(NOW(6));
Resultat:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
I det här fallet specificerade jag att NOW()
bör returnera en bråkdelprecision av 6
(vilket gör att den returnerar mikrosekunder).
Här är den igen med lägre precision:
SELECT
NOW(3),
MICROSECOND(NOW(3));
Resultat:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Ogiltiga argument
När ett ogiltigt tidsargument skickades, MICROSECOND()
returnerar null
:
SELECT MICROSECOND('10:75:00.123456');
Resultat:
+--------------------------------+ | MICROSECOND('10:75:00.123456') | +--------------------------------+ | NULL | +--------------------------------+
Argument saknas
Anropar MICROSECOND()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
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
Och ett annat exempel:
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