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

Come funziona TIME_FORMAT() in MariaDB

In MariaDB, TIME_FORMAT() è una funzione di data e ora incorporata che formatta un valore di ora in base alla stringa di formato specificata.

Funziona in modo simile a DATE_FORMAT() funzione, tranne per il fatto che la stringa di formato può contenere solo identificatori di formato per ore, minuti e secondi.

Richiede due argomenti; l'ora e la stringa di formato.

Sintassi

La sintassi è questa:

TIME_FORMAT(time,format)

Dove time è il valore dell'ora e il format è la stringa di formato. Vedere le stringhe di formato MariaDB per un elenco di identificatori di formato accettabili. Come accennato, vengono accettati solo gli identificatori di formato per ore, minuti e secondi. Tutti gli altri valori restituiscono null .

Esempio

Ecco un esempio:

SELECT TIME_FORMAT('10:30:45', '%H %i %S');

Risultato:

+-------------------------------------+
| TIME_FORMAT('10:30:45', '%H %i %S') |
+-------------------------------------+
| 10 30 45                            |
+-------------------------------------+

Eccolo di nuovo, ma questa volta forniamo una stringa di formato più elaborata:

SELECT TIME_FORMAT(
    '10:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Risultato:

+--------------------------------------+
| Result                               |
+--------------------------------------+
| 10 hours, 30 minutes, and 45 seconds |
+--------------------------------------+

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_FORMAT(
    '810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Risultato:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 810 hours, 30 minutes, and 45 seconds |
+---------------------------------------+

Valori temporali negativi

Ecco un esempio con un valore temporale negativo:

SELECT TIME_FORMAT(
    '-810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Risultato:

+----------------------------------------+
| Result                                 |
+----------------------------------------+
| -810 hours, 30 minutes, and 45 seconds |
+----------------------------------------+

Tempi fuori portata

Tuttavia, fornire un valore temporale al di fuori dell'intervallo restituirà il limite superiore di tale intervallo, insieme a un avviso:

SELECT TIME_FORMAT(
    '910:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Risultato:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 838 hours, 59 minutes, and 59 seconds |
+---------------------------------------+
1 row in set, 1 warning (0.003 sec)

Controlliamo l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '910:30:45' |
+---------+------+---------------------------------------------+

Argomenti non validi

Quando vengono passati argomenti non validi, TIME_FORMAT() restituisce null con un avviso:

SELECT TIME_FORMAT('Homer', 'Simpson');

Risultato:

+---------------------------------+
| TIME_FORMAT('Homer', 'Simpson') |
+---------------------------------+
| NULL                            |
+---------------------------------+
1 row in set, 1 warning (0.009 sec)

Controlla l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Stringa di formato non valida

La stringa di formato può contenere solo identificatori di formato per ore, minuti e secondi. Qualsiasi altro specificatore di formato risulta null in fase di restituzione:

SELECT TIME_FORMAT('10:30:45', '%M %W');

Risultato:

+----------------------------------+
| TIME_FORMAT('10:30:45', '%M %W') |
+----------------------------------+
| NULL                             |
+----------------------------------+

Argomento mancante

Chiamando TIME_FORMAT() con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:

SELECT TIME_FORMAT();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'

E un altro esempio:

SELECT TIME_FORMAT('10:09:10');

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'