In MySQL, puoi usare TIME_FORMAT()
funzione per formattare un valore temporale.
Questa funzione funziona proprio come DATE_FORMAT()
funzione, tranne per il fatto che il valore può essere formattato solo in ore, minuti, secondi e microsecondi.
Consulta la tabella in fondo a questo articolo per un elenco di identificatori di formato che possono essere utilizzati con questa funzione.
Sintassi
La sintassi è questa:
TIME_FORMAT(time,format)
Dove time
è il valore dell'ora che vuoi formattare e format
è la stringa di formato (questo determina come viene effettivamente formattato il valore dell'ora).
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';
Risultato:
+-------------+ | Result | +-------------+ | 02:35:27 PM | +-------------+
Questo esempio usa il %r
identificatore di formato, che formatta l'ora come 12 ore (hh:mm:ss seguito da AM o PM).
Esempio 2 – Formattazione più specifica
Se l'utilizzo di un identificatore di formato più generale come nell'esempio precedente non è adatto, sono disponibili vari altri identificatori di formato che possono aiutarti a creare il formato richiesto.
Ad esempio, se ti piace il formato precedente, ma non vuoi che vengano restituiti i secondi, puoi farlo:
SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';
Risultato:
+----------+ | Result | +----------+ | 02:35 PM | +----------+
Esempio 3 – 24 ore
Ci sono anche specificatori di formato per 24 ore. Ecco il modo più semplice per formattare l'ora utilizzando 24 ore.
SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';
Risultato:
+----------+ | Result | +----------+ | 14:35:27 | +----------+
Esempio 4 – Microsecondi
Ecco un esempio che include la parte dei secondi frazionari nel risultato:
SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';
Risultato:
+-----------------+ | Result | +-----------------+ | 14:35:27.000000 | +-----------------+
Naturalmente, possiamo anche includere microsecondi nel valore del tempo iniziale:
SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';
Risultato:
+-----------------+ | Result | +-----------------+ | 14:35:27.123456 | +-----------------+
Esempio 5 – Tempo trascorso
Il tipo di dati temporali non è limitato a 24 ore. Può anche essere usato per rappresentare il tempo trascorso. Quando si utilizza questa funzione per il tempo trascorso, è necessario essere consapevoli di come funzionano gli identificatori del formato dell'ora con valori di tempo al di fuori dell'intervallo da 0 a 23.
La documentazione MySQL afferma quanto segue:
Se il valore dell'ora contiene una parte dell'ora maggiore di 23
, il %H
e %k
gli specificatori di formato dell'ora producono un valore maggiore del normale intervallo di 0..23
. Gli altri specificatori del formato dell'ora producono il valore dell'ora modulo 12
.
Ecco un esempio da dimostrare:
SELECT TIME_FORMAT('24:00:00', '%H %k %h %I %l') AS '24', TIME_FORMAT('48:00:00', '%H %k %h %I %l') AS '48', TIME_FORMAT('100:00:00', '%H %k %h %I %l') AS '100', TIME_FORMAT('500:00:00', '%H %k %h %I %l') AS '500';
Risultato:
+----------------+----------------+-----------------+-----------------+ | 24 | 48 | 100 | 500 | +----------------+----------------+-----------------+-----------------+ | 24 24 12 12 12 | 48 48 12 12 12 | 100 100 04 04 4 | 500 500 08 08 8 | +----------------+----------------+-----------------+-----------------+
Specificatori di formato
I seguenti specificatori possono essere utilizzati per specificare il formato di ritorno. Questi sono un sottoinsieme di quelli disponibili con DATE_FORMAT()
funzione. Il valore del formato deve iniziare con un segno di percentuale (%
).
Specificatore | Descrizione |
---|---|
%f | Microsecondi (000000 ..999999 ) |
%H | Ora (00 ..23 ) |
%h | Ora (01 ..12 ) |
%I | Ora (01 ..12 ) |
%i | Minuti, numerici (00 ..59 ) |
%k | Ora (0 ..23 ) |
%l | Ora (1 ..12 ) |
%p | AM o PM |
%r | Ora, 12 ore (hh:mm:ss seguito da AM o PM ) |
%S | Secondi (00 ..59 ) |
%s | Secondi (00 ..59 ) |
%T | Ora, 24 ore (hh:mm:ss ) |
%% | Un letterale % carattere |