In MariaDB, TIME()
è una funzione di data e ora incorporata che estrae la parte dell'ora da una determinata espressione ora o data/ora e la restituisce come stringa.
Accetta un argomento, che è il valore di ora o data e ora per il quale desideri estrarre l'ora.
Sintassi
La sintassi è questa:
TIME(expr)
Dove expr
è l'espressione di ora o data e ora per cui estrarre l'ora.
Esempio
Ecco un esempio da dimostrare:
SELECT TIME('2030-02-01 10:30:45');
Risultato:
+-----------------------------+ | TIME('2030-02-01 10:30:45') | +-----------------------------+ | 10:30:45 | +-----------------------------+
Valori temporali
Ecco un esempio che estrae l'ora da un valore temporale:
SELECT TIME('10:30:45');
Risultato:
+------------------+ | TIME('10:30:45') | +------------------+ | 10:30:45 | +------------------+
Microsecondi
Ecco un esempio che include microsecondi:
SELECT TIME('2030-02-01 10:30:45.123456');
Risultato:
+------------------------------------+ | TIME('2030-02-01 10:30:45.123456') | +------------------------------------+ | 10:30:45.123456 | +------------------------------------+
Orari più grandi
TIME
i valori possono essere compresi nell'intervallo '-838:59:59.999999'
a '838:59:59.999999'
.
Pertanto, la parte dell'ora può essere molto più alta di 23
:
SELECT TIME('578:30:45');
Risultato:
+-------------------+ | TIME('578:30:45') | +-------------------+ | 578:30:45 | +-------------------+
Tempi negativi
I tempi negativi sono validi:
Esempio
SELECT TIME('-578:30:45');
Risultato:
+--------------------+ | TIME('-578:30:45') | +--------------------+ | -578:30:45 | +--------------------+
Orari fuori portata
Valori temporali al di fuori dell'intervallo '-838:59:59.999999'
a '838:59:59.999999'
sono limitati al confine pertinente e includono un avviso.
Esempio:
SELECT TIME('978:30:45');
Risultato (usando l'output verticale):
+-------------------+ | TIME('978:30:45') | +-------------------+ | 838:59:59 | +-------------------+ 1 row in set, 1 warning (0.003 sec)
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato (usando l'output verticale):
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '978:30:45' | +---------+------+---------------------------------------------+
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare l'ora corrente:
SELECT
NOW(),
TIME(NOW());
Risultato:
+---------------------+-------------+ | NOW() | TIME(NOW()) | +---------------------+-------------+ | 2021-05-27 10:24:23 | 10:24:23 | +---------------------+-------------+
Argomenti non validi
Quando viene passato un argomento non valido, TIME()
restituisce null
con un avviso:
SELECT TIME('Ten Thirty AM');
Risultato:
+-----------------------+ | TIME('Ten Thirty AM') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.002 sec)
Controlla l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+---------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------+ | Warning | 1292 | Incorrect time value: 'Ten Thirty AM' | +---------+------+---------------------------------------+
Argomento mancante
Chiamando TIME()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT TIME();
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 TIME('10:30:45', '06:30:45');
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')' at line 1