MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona MAKETIME() in MariaDB

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.