Question

Je viens d'essayer d'insérer deux lignes avec le datetime courant et calcule ensuite le temps écoulé depuis cette date. Voici les lignes de ma table après deux insertions et en utilisant la fonction NOW () pour régler l'horodatage:

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

Quelques minutes après l'insertion de la rangée avec userId égal à 2, I exécuté la commande suivante qui je l'espère, me donner le temps écoulé à partir de l'estampille temporelle pour chaque ligne. Voici les résultats:

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

Je me demande comment la deuxième ligne a cette énorme valeur elapsedSeconds qui indique exactement 1 heure, 16 minutes et 25 secondes était passé, mais il est facile de voir que seulement environ 5 minutes se sont écoulées depuis.

Voici la structure de la table:

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

Toutes les idées et / ou explications?

Était-ce utile?

La solution

Je ne peux pas expliquer le problème, mais je soupçonne que l'opération de - renvoie le résultat dans un format inattendu (peut-être y compris microsecondes ou dixièmes?)

J'utiliser TIMEDIFF() .

  

renvoie expr1 - expr2 exprimée en valeur temporelle. expr1 et expr2 sont temps ou expressions date et à temps, mais les deux doivent être du même type.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top