W MariaDB, MICROSECOND() to wbudowana funkcja daty i czasu, która zwraca mikrosekundową część danego wyrażenia czasu.
Przyjmuje jeden argument, czyli czas, z którego chcesz wyodrębnić mikrosekundy.
Sekundy są zwracane jako liczba z zakresu 0 do 999999 .
Składnia
Składnia wygląda tak:
MICROSECOND(time)
Gdzie time to wyrażenie czasowe, z którego należy pobrać mikrosekundy.
Przykład
Oto przykład:
SELECT MICROSECOND('10:30:45.123456'); Wynik:
+--------------------------------+
| MICROSECOND('10:30:45.123456') |
+--------------------------------+
| 123456 |
+--------------------------------+ Poniższe wyrażenie czasowe nie zawiera jawnie mikrosekund:
SELECT MICROSECOND('10:30:45'); Wynik:
+-------------------------+
| MICROSECOND('10:30:45') |
+-------------------------+
| 0 |
+-------------------------+
Wynik to 0 .
Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT MICROSECOND('2030-02-01 10:30:45.123456'); Wynik:
+-------------------------------------------+
| MICROSECOND('2030-02-01 10:30:45.123456') |
+-------------------------------------------+
| 123456 |
+-------------------------------------------+ Wartości dat
Podanie daty bez godziny zwraca 0 , wraz z ostrzeżeniem.
Przykład:
SELECT MICROSECOND('2025-10-31'); Wynik:
+---------------------------+
| MICROSECOND('2025-10-31') |
+---------------------------+
| 0 |
+---------------------------+
1 row in set, 1 warning (0.001 sec) Ostrzeżenie możemy zobaczyć, uruchamiając następujący kod:
SHOW WARNINGS; Wynik:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Aktualna data
Możemy przekazać NOW() jako argument datetime, aby użyć aktualnego czasu:
SELECT
NOW(6),
MICROSECOND(NOW(6)); Wynik:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
W tym przypadku określiłem, że NOW() powinien zwrócić ułamkową precyzję 6 (co powoduje, że zwraca mikrosekundy).
Tutaj znowu z mniejszą precyzją:
SELECT
NOW(3),
MICROSECOND(NOW(3)); Wynik:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu czasu, MICROSECOND() zwraca null :
SELECT MICROSECOND('10:75:00.123456'); Wynik:
+--------------------------------+
| MICROSECOND('10:75:00.123456') |
+--------------------------------+
| NULL |
+--------------------------------+ Brakujący argument
Wywołanie MICROSECOND() z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT MICROSECOND(); Wynik:
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
I kolejny przykład:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123'); Wynik:
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