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

Come funziona TIME() in MariaDB

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