Mysql
 sql >> Database >  >> RDS >> Mysql

TIMEDIFF() Esempi – MySQL

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.