In MariaDB, MICROSECOND()
è una funzione di data e ora incorporata che restituisce la parte in microsecondi di una determinata espressione temporale.
Accetta un argomento, che è il tempo da cui vuoi estrarre i microsecondi.
I secondi vengono restituiti come un numero nell'intervallo 0
a 999999
.
Sintassi
La sintassi è questa:
MICROSECOND(time)
Dove time
è l'espressione del tempo da cui ottenere i microsecondi.
Esempio
Ecco un esempio:
SELECT MICROSECOND('10:30:45.123456');
Risultato:
+--------------------------------+ | MICROSECOND('10:30:45.123456') | +--------------------------------+ | 123456 | +--------------------------------+
La seguente espressione temporale non include in modo esplicito i microsecondi:
SELECT MICROSECOND('10:30:45');
Risultato:
+-------------------------+ | MICROSECOND('10:30:45') | +-------------------------+ | 0 | +-------------------------+
Quindi il risultato è 0
.
Valori di data e ora
Funziona anche con i valori datetime:
SELECT MICROSECOND('2030-02-01 10:30:45.123456');
Risultato:
+-------------------------------------------+ | MICROSECOND('2030-02-01 10:30:45.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+
Valori di data
Il superamento di una data senza un'ora restituisce 0
, insieme a un avviso.
Esempio:
SELECT MICROSECOND('2025-10-31');
Risultato:
+---------------------------+ | MICROSECOND('2025-10-31') | +---------------------------+ | 0 | +---------------------------+ 1 row in set, 1 warning (0.001 sec)
Possiamo vedere l'avviso eseguendo il codice seguente:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '2025-10-31' | +---------+------+----------------------------------------------+
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare l'ora corrente:
SELECT
NOW(6),
MICROSECOND(NOW(6));
Risultato:
+----------------------------+---------------------+ | NOW(6) | MICROSECOND(NOW(6)) | +----------------------------+---------------------+ | 2021-05-16 14:41:09.098168 | 98168 | +----------------------------+---------------------+
In questo caso ho specificato che NOW()
dovrebbe restituire una precisione frazionaria di 6
(che restituisce microsecondi).
Eccolo di nuovo con una precisione inferiore:
SELECT
NOW(3),
MICROSECOND(NOW(3));
Risultato:
+-------------------------+---------------------+ | NOW(3) | MICROSECOND(NOW(3)) | +-------------------------+---------------------+ | 2021-05-16 14:42:35.831 | 831000 | +-------------------------+---------------------+
Argomenti non validi
Quando viene passato un argomento di tempo non valido, MICROSECOND()
restituisce null
:
SELECT MICROSECOND('10:75:00.123456');
Risultato:
+--------------------------------+ | MICROSECOND('10:75:00.123456') | +--------------------------------+ | NULL | +--------------------------------+
Argomento mancante
Chiamando MICROSECOND()
con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT MICROSECOND();
Risultato:
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 un altro esempio:
SELECT MICROSECOND('10:30:45.123', '06:30:45.123');
Risultato:
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