В MariaDB, MICROSECOND()
е вградена функция за дата и час, която връща микросекундната част от даден времеви израз.
Той приема един аргумент, който е времето, от което искате да извлечете микросекундите.
Секундите се връщат като число в диапазона 0
до 999999
.
Синтаксис
Синтаксисът е така:
MICROSECOND(time)
Където time
е изразът за време, от който се получават микросекундите.
Пример
Ето един пример:
SELECT MICROSECOND('10:30:45.123456');
Резултат:
+--------------------------------+ | MICROSECOND('10:30:45.123456') | +--------------------------------+ | 123456 | +--------------------------------+
Следният израз за време не включва изрично микросекунди:
SELECT MICROSECOND('10:30:45');
Резултат:
+-------------------------+ | MICROSECOND('10:30:45') | +-------------------------+ | 0 | +-------------------------+
Така че резултатът е 0
.
Стойности за дата и час
Работи и със стойности за дата и час:
SELECT MICROSECOND('2030-02-01 10:30:45.123456');
Резултат:
+-------------------------------------------+ | MICROSECOND('2030-02-01 10:30:45.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+
Стойности за дата
Предаването на дата без час връща 0
, заедно с предупреждение.
Пример:
SELECT MICROSECOND('2025-10-31');
Резултат:
+---------------------------+ | MICROSECOND('2025-10-31') | +---------------------------+ | 0 | +---------------------------+ 1 row in set, 1 warning (0.001 sec)
Можем да видим предупреждението, като изпълним следния код:
SHOW WARNINGS;
Резултат:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Текуща дата
Можем да предадем NOW()
като аргумент datetime за използване на текущото време:
SELECT
NOW(6),
MICROSECOND(NOW(6));
Резултат:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
В този случай посочих, че NOW()
трябва да върне дробна точност от 6
(което го кара да връща микросекунди).
Ето го отново с по-ниска точност:
SELECT
NOW(3),
MICROSECOND(NOW(3));
Резултат:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Невалидни аргументи
Когато се подаде невалиден аргумент за време, MICROSECOND()
връща null
:
SELECT MICROSECOND('10:75:00.123456');
Резултат:
+--------------------------------+ | MICROSECOND('10:75:00.123456') | +--------------------------------+ | NULL | +--------------------------------+
Липсващ аргумент
Извикване на MICROSECOND()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT MICROSECOND();
Резултат:
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
И още един пример:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123');
Резултат:
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