sql >> Databáze >  >> RDS >> Mysql

neočekávané výsledky pro časový rozdíl

Upravit: Jakou verzi MySQL používáte? Funguje to dobře alespoň na 5.0.22. Právě jsem provedl tento dotaz. viz zde

 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)

Viděli jste zde ? Možná jde o problém se zkrácením protože Časový rozsah je mnohem menší než rozdíl v datech, který máte.

Původní odpověď

Použijte toto

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

Problém je, že se snažíte převést záporný čas na čas ve vteřině. Záměna proměnných to udělá.

    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. Jaká je maximální délka dat, která mohu vložit do sloupce BLOB v MySQL?

  2. Načtěte předposlední záznam pro každého uživatele z databáze

  3. Je možné v PostgreSQL vytvořit tabulku s názvem proměnné?

  4. mysql:select max(score) nevrací relevantní data řádku