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

uventede resultater for timediff

Rediger: Hvilken version af MySQL bruger du? Det fungerer fint på 5.0.22 i det mindste. Jeg har lige kørt denne forespørgsel. se her

 mysql> SELECT TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00'));
 +---------------------------------------------------------------------+
 | TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00')) |
 +---------------------------------------------------------------------+
 |                                                           -31622400 |
 +---------------------------------------------------------------------+
 1 row in set (0.00 sec)
 

Så du her ? Det kan være et trunkeringsproblem fordi tidsintervallet er meget mindre end den datoforskel, du har.

Originalt svar

Brug denne

SELECT TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00'); +--------------------------------------------------------------------+ | TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00') | +--------------------------------------------------------------------+ | 31622400 | +--------------------------------------------------------------------+

Problemet er, at du forsøger at konvertere en negativ tid til tid i sekund. Udskiftning af variablerne vil gøre jobbet.

SELECT TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00')); +--------------------------------------------------------------------+ | TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00')) | +--------------------------------------------------------------------+ | 31622400 | +--------------------------------------------------------------------+


  1. Oracle Stored Procedure og Cursor

  2. MySQL / MariaDB accepterer ikke JSON-format? Kan ikke oprette database

  3. Hvordan definerer man et operatoralias i PostgreSQL?

  4. Fjerner unicode-punkttegn