Frage

Ich habe gerade versucht, mit dem aktuellen Datetime zwei Zeilen einzufügen und dann seit diesem Zeitpunkt die verstrichene Zeit berechnet. Hier sind die Zeilen von meinem Tisch nach zwei Einfügungen und mit NOW () Funktion, um den Zeitstempel setzen:

mysql> select * from pendingActivations;
+--------+------------+---------------------+
| userId | code       | timestamp           |
+--------+------------+---------------------+
|      2 | aaa        | 2010-08-23 17:04:02 |
|   2345 | alkfjkla23 | 2010-08-23 16:59:53 |
+--------+------------+---------------------+

Wenige Minuten nach dem Einführen der Reihe mit userId gleich 2, ausgeführt, I den folgenden Befehl, den ich gehofft würde mir die verstrichene Zeit von dem Zeitstempel für jede Zeile. Hier sind die Ergebnisse:

mysql> select userId, code, timestamp, NOW() - timestamp as elapsedSeconds from pendingActivations;
+--------+------------+---------------------+----------------+
| userId | code       | timestamp           | elapsedSeconds |
+--------+------------+---------------------+----------------+
|      2 | aaa        | 2010-08-23 17:04:02 |     136.000000 |
|   2345 | alkfjkla23 | 2010-08-23 16:59:53 |    4585.000000 |
+--------+------------+---------------------+----------------+

Ich frage mich, wie die zweite Reihe, die große elapsedSeconds Wert aufweist, der anzeigt, dass genau 1 Stunde, 16 Minuten und 25 Sekunden vergangen waren, obwohl es leicht, dass nur etwa 5 Minuten gesehen waren vergangen, seit.

Hier ist die Tabellenstruktur:

mysql> describe pendingActivations;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| userId    | int(11)     | NO   | PRI | NULL    |       | 
| code      | varchar(32) | NO   | UNI | NULL    |       | 
| timestamp | datetime    | NO   |     | NULL    |       | 
+-----------+-------------+------+-----+---------+-------+

Alle Ideen und / oder Erklärungen?

War es hilfreich?

Lösung

Ich kann das Problem nicht erklären, aber ich vermute, dass die - Operation das Ergebnis in einem unerwarteten Format zurückzugibt (vielleicht einschließlich Mikrosekunden oder Zehntel?)

würde ich TIMEDIFF() .

  

kehrt expr1 - expr2 als Zeitwert ausgedrückt. expr1 und expr2 sind Zeit- oder Datums- und Zeitangaben, aber beide müssen vom gleichen Typ sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top