Mysql
 sql >> Baza danych >  >> RDS >> Mysql

nieoczekiwane wyniki dla timediff

Edytuj: Jakiej wersji MySQL używasz? Działa dobrze przynajmniej w wersji 5.0.22. Właśnie uruchomiłem to zapytanie. zobacz tutaj

 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)

Czy zobaczysz tutaj ? może to być problem z obcięciem ponieważ zakres czasu jest znacznie mniejszy niż różnica dat, którą masz.

Oryginalna odpowiedź

Użyj tego

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

Problem polega na tym, że próbujesz zamienić ujemny czas na czas na sekundę. Zamiana zmiennych wykona zadanie.

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja Select MySQL z aliasem kończy się niepowodzeniem i nie znaleziono kolumny

  2. co to jest java.io.EOFException, Komunikat:Nie można odczytać odpowiedzi z serwera. Oczekiwany odczyt 4 bajtów, odczyt 0 bajtów

  3. MySQL:wybierz pierwszy element listy oddzielonej przecinkami

  4. InnoDB vs. MyISAM — czas zapytania o wstawienie

  5. Znajdź nakładające się wiersze (data/godzina) w jednej tabeli