In MariaDB, MAKETIME()
è una funzione di data e ora incorporata che restituisce un valore di tempo, basato su ore, minuti e secondi forniti come argomenti.
Sintassi
La sintassi è questa:
MAKETIME(hour,minute,second)
Esempio
Ecco un esempio:
SELECT MAKETIME(08, 30, 45);
Risultato:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
E un altro:
SELECT MAKETIME(23, 8, 1);
Risultato:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Intervalli
Se l'hour
argomento non è compreso nell'intervallo -838
a 838
, il valore viene troncato con un avviso.
Se il minute
o second
gli argomenti sono fuori dall'intervallo 0
a 59
, il risultato è null
e viene visualizzato un avviso (la documentazione di MariaDB afferma che l'intervallo è 0
a 60
, ma questo non è il caso nei miei test. Inoltre, la documentazione di MariaDB afferma anche che l'intervallo per i valori temporali di MariaDB è '-838:59:59.999999'
a '838:59:59.999999'
).
Ad ogni modo, ecco un esempio di tempo con valori che si trovano all'estremità superiore dell'intervallo accettato:
SELECT MAKETIME(838, 59, 59.999999);
Risultato:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Questi valori erano ancora all'interno dell'intervallo accettato e quindi abbiamo ottenuto un valore temporale valido.
Minuti e secondi non validi
Ecco cosa succede quando superiamo l'intervallo accettato per il minute
e second
argomenti:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Risultato:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Il risultato è null
per entrambi, con un avviso.
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Orari non validi
Ora vediamo cosa succede quando usciamo dall'intervallo accettato per l'hour
argomento:
SELECT MAKETIME(900, 00, 00);
Risultato:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
In questo scenario, viene restituito un valore di tempo con ore, minuti e secondi ritagliati all'intervallo superiore. Viene restituito anche un avviso.
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Argomento mancante
Chiamando MAKETIME()
con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT MAKETIME();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
E un altro esempio:
SELECT MAKETIME( 12, 1 );
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Fissa un appuntamento
Vedi anche SEC_TO_TIME()
per costruire un valore di data da un numero di secondi.
Vedi anche MAKEDATE()
per costruire un valore di data dal suo anno e giorno dell'anno.