sql >> Databasteknik >  >> RDS >> Mysql

TIMEDIFF() Exempel – MySQL

MySQL TIMEDIFF() funktion returnerar skillnaden mellan två värden för tid eller datum.

Så det fungerar är att du anger de två värdena som ska jämföras, och TIMEDIFF() subtraherar det andra värdet från det första och returnerar sedan resultatet som ett tidsvärde.

Syntax

Syntaxen ser ut så här:

TIMEDIFF(expr1,expr2)

Där expr1 och expr2 är de två värdena som ska jämföras. Returvärdet är expr2 subtraherad från expr1 .

Grundläggande exempel

Här är ett exempel att visa.

SELECT TIMEDIFF('11:35:25', '10:35:25');

Resultat:

+----------------------------------+
| TIMEDIFF('11:35:25', '10:35:25') |
+----------------------------------+
| 01:00:00                         |
+----------------------------------+

Förfluten tid

Tidsvärdet kan representera förfluten tid, så det är inte begränsat till att vara mindre än 24 timmar.

SELECT TIMEDIFF('500:35:25', '10:35:25');

Resultat:

+-----------------------------------+
| TIMEDIFF('500:35:25', '10:35:25') |
+-----------------------------------+
| 490:00:00                         |
+-----------------------------------+

Negativ tidsskillnad

Om det andra värdet är större än det första får du ett negativt värde för tidsskillnaden. Detta är helt giltigt.

SELECT TIMEDIFF('10:35:25', '500:35:25');

Resultat:

+-----------------------------------+
| TIMEDIFF('10:35:25', '500:35:25') |
+-----------------------------------+
| -490:00:00                        |
+-----------------------------------+

Datetime-värden

Här är ett exempel som använder datetime-värden som argument.

SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');

Resultat:

+--------------------------------------------------------+
| TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| 744:00:00                                              |
+--------------------------------------------------------+

Observera att båda argumenten måste vara av samma typ. Så du kan inte ha ett tidsvärde för den första och ett datum och tid för den andra (och vice versa).

Observera också att tidsdatatypen endast kan vara inom intervallet -838:59:59 till 838:59:59 . Därför fungerar inte följande:

SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');

Resultat:

+--------------------------------------------------------+
| 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)

I det här fallet får vi ett felaktigt resultat och en varning.


  1. Finns det en VERKLIG prestandaskillnad mellan INT- och VARCHAR-primärnycklar?

  2. Skapa en schemabunden UDF i SQL Server

  3. Spelar ordningsföljden på tabellerna som hänvisas till i ON-klausulen i JOIN någon roll?

  4. Vad betyder PÅ [PRIMÄR]?