V MariaDB, MICROSECOND()
je vestavěná funkce data a času, která vrací mikrosekundovou část daného časového výrazu.
Přijímá jeden argument, což je čas, ze kterého chcete extrahovat mikrosekundy.
Sekundy jsou vráceny jako číslo v rozsahu 0
na 999999
.
Syntaxe
Syntaxe vypadá takto:
MICROSECOND(time)
Kde time
je časový výraz pro získání mikrosekund.
Příklad
Zde je příklad:
SELECT MICROSECOND('10:30:45.123456');
Výsledek:
+--------------------------------+ | MICROSECOND('10:30:45.123456') | +--------------------------------+ | 123456 | +--------------------------------+
Následující časový výraz výslovně nezahrnuje mikrosekundy:
SELECT MICROSECOND('10:30:45');
Výsledek:
+-------------------------+ | MICROSECOND('10:30:45') | +-------------------------+ | 0 | +-------------------------+
Takže výsledek je 0
.
Hodnoty data a času
Funguje také s hodnotami datetime:
SELECT MICROSECOND('2030-02-01 10:30:45.123456');
Výsledek:
+-------------------------------------------+ | MICROSECOND('2030-02-01 10:30:45.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+
Hodnoty data
Předání data bez času vrátí 0
, spolu s varováním.
Příklad:
SELECT MICROSECOND('2025-10-31');
Výsledek:
+---------------------------+ | MICROSECOND('2025-10-31') | +---------------------------+ | 0 | +---------------------------+ 1 row in set, 1 warning (0.001 sec)
Varování můžeme vidět spuštěním následujícího kódu:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Aktuální datum
Můžeme předat NOW()
jako argument datetime pro použití aktuálního času:
SELECT
NOW(6),
MICROSECOND(NOW(6));
Výsledek:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
V tomto případě jsem uvedl, že NOW()
by měl vrátit zlomkovou přesnost 6
(což umožňuje vrátit mikrosekundy).
Tady je to opět s nižší přesností:
SELECT
NOW(3),
MICROSECOND(NOW(3));
Výsledek:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Neplatné argumenty
Při předání neplatného časového argumentu MICROSECOND()
vrátí null
:
SELECT MICROSECOND('10:75:00.123456');
Výsledek:
+--------------------------------+ | MICROSECOND('10:75:00.123456') | +--------------------------------+ | NULL | +--------------------------------+
Chybí argument
Volání MICROSECOND()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT MICROSECOND();
Výsledek:
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
A další příklad:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123');
Výsledek:
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