MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona MICROSECOND() in MariaDB

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