No MariaDB,
MICROSECOND() é uma função de data e hora integrada que retorna a parte de microssegundos de uma determinada expressão de tempo. Ele aceita um argumento, que é o tempo do qual você deseja extrair os microssegundos.
Os segundos são retornados como um número no intervalo
0 para 999999 . Sintaxe
A sintaxe fica assim:
MICROSECOND(time) Onde
time é a expressão de tempo para obter os microssegundos. Exemplo
Aqui está um exemplo:
SELECT MICROSECOND('10:30:45.123456'); Resultado:
+--------------------------------+
| MICROSECOND('10:30:45.123456') |
+--------------------------------+
| 123456 |
+--------------------------------+ A seguinte expressão de tempo não inclui explicitamente microssegundos:
SELECT MICROSECOND('10:30:45'); Resultado:
+-------------------------+
| MICROSECOND('10:30:45') |
+-------------------------+
| 0 |
+-------------------------+ Então o resultado é
0 . Valores de data e hora
Também funciona com valores de data e hora:
SELECT MICROSECOND('2030-02-01 10:30:45.123456'); Resultado:
+-------------------------------------------+
| MICROSECOND('2030-02-01 10:30:45.123456') |
+-------------------------------------------+
| 123456 |
+-------------------------------------------+ Valores de data
Passar uma data sem hora retorna
0 , juntamente com um aviso. Exemplo:
SELECT MICROSECOND('2025-10-31'); Resultado:
+---------------------------+
| MICROSECOND('2025-10-31') |
+---------------------------+
| 0 |
+---------------------------+
1 row in set, 1 warning (0.001 sec) Podemos ver o aviso executando o seguinte código:
SHOW WARNINGS; Resultado:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Data atual
Podemos passar
NOW() como argumento datetime para usar a hora atual:SELECT
NOW(6),
MICROSECOND(NOW(6)); Resultado:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
Neste caso eu especifiquei que
NOW() deve retornar uma precisão fracionária de 6 (o que o faz retornar microssegundos). Aqui está novamente com uma precisão menor:
SELECT
NOW(3),
MICROSECOND(NOW(3)); Resultado:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Argumentos inválidos
Quando passado um argumento de tempo inválido,
MICROSECOND() retorna null :SELECT MICROSECOND('10:75:00.123456'); Resultado:
+--------------------------------+
| MICROSECOND('10:75:00.123456') |
+--------------------------------+
| NULL |
+--------------------------------+ Argumento ausente
Chamando
MICROSECOND() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT MICROSECOND(); Resultado:
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
E outro exemplo:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123'); Resultado:
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