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