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.