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

TIMEDIFF() Eksempler – MySQL

MySQL TIMEDIFF() funktion returnerer forskellen mellem to tid- eller datotidsværdier.

Måden det fungerer på er, at du angiver de to værdier, der skal sammenlignes, og TIMEDIFF() trækker den anden værdi fra den første og returnerer derefter resultatet som en tidsværdi.

Syntaks

Syntaksen ser sådan ud:

TIMEDIFF(expr1,expr2)

Hvor expr1 og expr2 er de to værdier, der skal sammenlignes. Returværdien er expr2 trukket fra expr1 .

Grundlæggende eksempel

Her er et eksempel til at demonstrere.

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

Resultat:

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

Forløbet tid

Tidsværdien kan repræsentere forløbet tid, så den er ikke begrænset til at være mindre end 24 timer.

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

Resultat:

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

Negativ tidsforskel

Hvis den anden værdi er større end den første, får du en negativ værdi for tidsforskellen. Dette er helt gyldigt.

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

Resultat:

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

Dato-tidsværdier

Her er et eksempel, der bruger datetime-værdier som argumenter.

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

Bemærk, at begge argumenter skal være af samme type. Så du kan ikke have en tidsværdi for den første og en dato-tidsværdi for den anden (og omvendt).

Bemærk også, at tidsdatatypen kun kan være i området -838:59:59 til 838:59:59 . Derfor virker følgende ikke:

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 dette tilfælde får vi et forkert resultat og en advarsel.


  1. Hvordan afrundes et gennemsnit til 2 decimaler i PostgreSQL?

  2. Kan ikke hente id'et for den sidst indsatte række i Hibernate ved hjælp af Oracle

  3. SQL-fejl ORA-01722:ugyldigt nummer

  4. Overvejelser om ydeevne for Azure SQL Managed Instance