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'