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' | +---------+------+--------------------------------------+