Mysql
 sql >> Datenbank >  >> RDS >> Mysql

unerwartete Ergebnisse für timediff

Bearbeiten: Welche MySQL-Version verwendest du? Es funktioniert zumindest auf 5.0.22 einwandfrei. Ich habe gerade diese Abfrage ausgeführt. siehe hier

 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)

Hast du hier nachgesehen ? Es könnte ein Trunkierungsproblem sein da der Zeitbereich viel kleiner ist als der Datumsunterschied, den Sie haben.

Originalantwort

Verwenden Sie diese

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

Das Problem ist, dass Sie versuchen, eine negative Zeit in Zeit in Sekunden umzuwandeln. Das Austauschen der Variablen wird den Job erledigen.

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