Di seguito sono elencate 4 funzioni che consentono di restituire l'ora da un valore di tempo in MariaDB.
Il HOUR() Funzione
Il HOUR() la funzione restituisce l'ora per un dato TIME o DATETIME espressione. Accetta un argomento, che è l'ora da cui vuoi estrarre l'ora.
Esempio:
SELECT HOUR('03:45:30'); Risultato:
+------------------+
| HOUR('03:45:30') |
+------------------+
| 3 |
+------------------+
Per i valori dell'ora, restituisce l'ora come numero nell'intervallo 0 a 23 . Tuttavia, l'intervallo di TIME i valori possono essere molto più grandi e, pertanto, il valore restituito può essere molto più alto di 23 . In particolare, TIME i valori possono essere compresi nell'intervallo '-838:59:59.999999' a '838:59:59.999999' .
Ecco un esempio con una parte oraria più grande:
SELECT HOUR('838:45:30'); Risultato:
+-------------------+
| HOUR('838:45:30') |
+-------------------+
| 838 |
+-------------------+
Se l'ora non rientra nell'intervallo accettato per TIME valori, il valore restituito è 838 con un avvertimento.
TIME i valori possono anche essere negativi. In questi casi, HOUR() restituisce un valore positivo.
Il EXTRACT() Funzione
Il EXTRACT() la funzione consente di estrarre un'unità specificata dal valore di data/ora. Pertanto, puoi usarlo per estrarre l'ora (così come altre unità) dal valore dell'ora.
Esempio:
SELECT EXTRACT(HOUR FROM '10:47:01'); Risultato:
+-------------------------------+ | EXTRACT(HOUR FROM '10:47:01') | +-------------------------------+ | 10 | +-------------------------------+
Il TIME_FORMAT() Funzione
Il TIME_FORMAT() La funzione consente di formattare un valore di tempo in base a una stringa di formato. La stringa di formato specifica come deve essere formattata l'ora.
È quindi possibile utilizzare questa funzione per restituire l'ora (oltre a minuti e secondi) dall'ora. Ci sono varie opzioni per restituire l'ora.
Ecco un esempio che restituisce l'ora in varie forme:
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l'; Risultato:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Ecco una descrizione di ciascuno di questi identificatori di formato:
| Specificatore di formato | Descrizione |
|---|---|
%H | Ora con 2 cifre tra 00-23. |
%h | Ora con 2 cifre tra 01-12. |
%I | Ora con 2 cifre tra 01-12. |
%k | Ora con 1 cifra compresa tra 0 e 23. |
%l | Ora con 1 cifra tra 1-12. |
Il TIME_FORMAT() la funzione accetta un sottoinsieme delle stringhe di formato che possono essere utilizzate con DATE_FORMAT() funzione. Consulta le stringhe di formato MariaDB per un elenco completo di stringhe di formato/specificatori che possono essere utilizzati con DATE_FORMAT() . Il TIME_FORMAT() la funzione accetta solo identificatori di formato per ore, minuti e secondi. Qualsiasi altro identificatore di formato restituisce null o 0 in fase di restituzione.
Il DATE_FORMAT() Funzione
Il DATE_FORMAT() La funzione consente di formattare un valore di data o data e ora in base a una stringa di formato. La stringa di formato specifica come formattare la data/ora.
Possiamo quindi usare gli stessi identificatori di formato che abbiamo usato con TIME_FORMAT() funzione nell'esempio precedente. Tuttavia, DATE_FORMAT() non accetta un TIME valore, quindi dovremo passare un DATETIME valore.
SELECT
DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l'; Risultato:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | 18 | 06 | 06 | 18 | 6 | +------+------+------+------+------+
Passando solo un TIME value non lo taglia del tutto con questa funzione:
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l'; Risultato:
+------+------+------+------+------+ | %H | %h | %I | %k | %l | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+ 1 row in set, 5 warnings (0.000 sec)
Mostra gli avvisi:
SHOW WARNINGS; Risultato:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | | Warning | 1292 | Incorrect datetime value: '18:45:30' | +---------+------+--------------------------------------+