In MariaDB, TIMEDIFF()
è una funzione di data e ora incorporata che restituisce la differenza tra due valori temporali o valori datetime, espressa come valore temporale.
È simile a DATEDIFF()
funzione, eccetto che DATEDIFF()
Il valore di ritorno di 's è espresso in giorni.
TIMEDIFF()
accetta due argomenti, entrambi espressioni di ora o data e ora. Quindi sottrae la seconda volta dalla prima.
Sintassi
La sintassi è questa:
TIMEDIFF(expr1,expr2)
Quindi restituisce expr1 - expr2
.
Esempio
Ecco un esempio:
SELECT TIMEDIFF('10:30:17', '1:10:10');
Risultato:
+---------------------------------+ | TIMEDIFF('10:30:17', '1:10:10') | +---------------------------------+ | 09:20:07 | +---------------------------------+
Eccolo di nuovo, ma con i valori temporali scambiati:
SELECT TIMEDIFF('1:10:10', '10:30:17');
Risultato:
+---------------------------------+ | TIMEDIFF('1:10:10', '10:30:17') | +---------------------------------+ | -09:20:07 | +---------------------------------+
Valori di data e ora
Ecco un esempio che utilizza i valori datetime:
SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Risultato:
+--------------------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') | +--------------------------------------------------------+ | 96:00:01 | +--------------------------------------------------------+
Tipi di valori misti
Mentre TIMEDIFF()
funziona su entrambi i valori time e datetime, entrambi gli argomenti devono essere dello stesso tipo. La combinazione di tipi risulta null
.
Esempio:
SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');
Risultato:
+---------------------------------------------+ | TIMEDIFF('2030-01-25 00:00:00', '23:59:59') | +---------------------------------------------+ | NULL | +---------------------------------------------+
Fuori portata
L'intervallo per i valori temporali è '-838:59:59.999999'
a '838:59:59.999999'
. Se il risultato è al di fuori di tale intervallo, il valore restituito è il limite superiore dell'intervallo pertinente e viene restituito un avviso.
Esempio:
SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');
Risultato:
+--------------------------------------------------------+ | TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') | +--------------------------------------------------------+ | 838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.003 sec)
Diamo un'occhiata all'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '87624:00:01' | +---------+------+-----------------------------------------------+
Data attuale
Qui passiamo NOW()
come secondo argomento:
SELECT
NOW(),
TIMEDIFF('2021-05-27 10:00:00', NOW());
Risultato:
+---------------------+----------------------------------------+ | NOW() | TIMEDIFF('2021-05-27 10:00:00', NOW()) | +---------------------+----------------------------------------+ | 2021-05-27 14:29:38 | -04:29:38 | +---------------------+----------------------------------------+
Argomenti non validi
Quando vengono passati argomenti non validi, TIMEEDIFF()
restituisce null
:
SELECT TIMEDIFF('Homer', 'Simpson');
Risultato:
+------------------------------+ | TIMEDIFF('Homer', 'Simpson') | +------------------------------+ | NULL | +------------------------------+
Argomento mancante
Chiamando TIMEDIFF()
il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT TIMEDIFF();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'
E:
SELECT TIMEDIFF('2030-05-21');
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'