Il TIMEDIFF()
di MySQL la funzione restituisce la differenza tra due valori di ora o data e ora.
Il modo in cui funziona è fornire i due valori da confrontare e TIMEDIFF()
sottrae il secondo valore dal primo, quindi restituisce il risultato come valore temporale.
Sintassi
La sintassi è questa:
TIMEDIFF(expr1,expr2)
Dove expr1
e expr2
sono i due valori da confrontare. Il valore restituito è expr2
sottratto da expr1
.
Esempio di base
Ecco un esempio da dimostrare.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Risultato:
+----------------------------------+ | TIMEDIFF('11:35:25', '10:35:25') | +----------------------------------+ | 01:00:00 | +----------------------------------+
Tempo trascorso
Il valore del tempo può rappresentare il tempo trascorso, quindi non è limitato a essere inferiore a 24 ore.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Risultato:
+-----------------------------------+ | TIMEDIFF('500:35:25', '10:35:25') | +-----------------------------------+ | 490:00:00 | +-----------------------------------+
Differenza temporale negativa
Se il secondo valore è maggiore del primo, otterrai un valore negativo per la differenza di orario. Questo è perfettamente valido.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Risultato:
+-----------------------------------+ | TIMEDIFF('10:35:25', '500:35:25') | +-----------------------------------+ | -490:00:00 | +-----------------------------------+
Valori di data e ora
Ecco un esempio che utilizza i valori datetime come argomenti.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Risultato:
+--------------------------------------------------------+ | TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | 744:00:00 | +--------------------------------------------------------+
Si noti che entrambi gli argomenti devono essere dello stesso tipo. Quindi non puoi avere un valore temporale per il primo e un valore datetime per il secondo (e viceversa).
Tieni inoltre presente che il tipo di dati relativi all'ora può essere solo compreso nell'intervallo -838:59:59 a 838:59:59 . Pertanto, quanto segue non funziona:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Risultato:
+--------------------------------------------------------+ | TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25') | +--------------------------------------------------------+ | -838:59:59 | +--------------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)
In questo caso, otteniamo un risultato errato e un avviso.