sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona MICROSEGUNDO() en MariaDB

En MariaDB, MICROSECOND() es una función de fecha y hora incorporada que devuelve la porción de microsegundos de una expresión de tiempo dada.

Acepta un argumento, que es el tiempo del que desea extraer los microsegundos.

Los segundos se devuelven como un número en el rango 0 a 999999 .

Sintaxis

La sintaxis es así:

MICROSECOND(time)

Donde time es la expresión de tiempo para obtener los microsegundos.

Ejemplo

He aquí un ejemplo:

SELECT MICROSECOND('10:30:45.123456');

Resultado:

+--------------------------------+
| MICROSECOND('10:30:45.123456') |
+--------------------------------+
|                         123456 |
+--------------------------------+

La siguiente expresión de tiempo no incluye microsegundos explícitamente:

SELECT MICROSECOND('10:30:45');

Resultado:

+-------------------------+
| MICROSECOND('10:30:45') |
+-------------------------+
|                       0 |
+-------------------------+

Entonces el resultado es 0 .

Valores de fecha y hora

También funciona con valores de fecha y hora:

SELECT MICROSECOND('2030-02-01 10:30:45.123456');

Resultado:

+-------------------------------------------+
| MICROSECOND('2030-02-01 10:30:45.123456') |
+-------------------------------------------+
|                                    123456 |
+-------------------------------------------+

Valores de fecha

Pasar una fecha sin hora devuelve 0 , junto con una advertencia.

Ejemplo:

SELECT MICROSECOND('2025-10-31');

Resultado:

+---------------------------+
| MICROSECOND('2025-10-31') |
+---------------------------+
|                         0 |
+---------------------------+
1 row in set, 1 warning (0.001 sec)

Podemos ver la advertencia ejecutando el siguiente código:

SHOW WARNINGS;

Resultado:

+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2025-10-31' |
+---------+------+----------------------------------------------+

Fecha actual

Podemos pasar NOW() como argumento de fecha y hora para usar la hora actual:

SELECT 
    NOW(6),
    MICROSECOND(NOW(6));

Resultado:

+----------------------------+---------------------+
| NOW(6)                     | MICROSECOND(NOW(6)) |
+----------------------------+---------------------+
| 2021-05-16 14:41:09.098168 |               98168 |
+----------------------------+---------------------+

En este caso especifiqué que NOW() debe devolver una precisión fraccionaria de 6 (lo que hace que devuelva microsegundos).

Aquí está de nuevo con menor precisión:

SELECT 
    NOW(3),
    MICROSECOND(NOW(3));

Resultado:

+-------------------------+---------------------+
| NOW(3)                  | MICROSECOND(NOW(3)) |
+-------------------------+---------------------+
| 2021-05-16 14:42:35.831 |              831000 |
+-------------------------+---------------------+

Argumentos no válidos

Cuando se pasa un argumento de tiempo no válido, MICROSECOND() devuelve null :

SELECT MICROSECOND('10:75:00.123456');

Resultado:

+--------------------------------+
| MICROSECOND('10:75:00.123456') |
+--------------------------------+
|                           NULL |
+--------------------------------+

Argumento faltante

Llamando a MICROSECOND() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

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

Y otro ejemplo:

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