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