MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como MICROSECOND() funciona no MariaDB


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