Pregunta

Me acaba de intentar insertar dos filas con la fecha y hora actual y luego calcula el tiempo transcurrido desde esa fecha. Aquí están las filas de mi mesa después de dos inserciones y utilizando ahora la función () para establecer la marca de tiempo:

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

Pocos minutos después de la inserción de la serie con el ID de usuario igual a 2, que ejecuta el siguiente comando, que yo esperaba que me diera el tiempo transcurrido desde la fecha y hora para cada fila. Aquí están los resultados:

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

Me pregunto cómo la segunda fila tiene ese valor enormes elapsedSeconds que indica que exactamente 1 hora, 16 minutos y 25 segundos había pasado, a pesar de que se ve fácilmente que sólo alrededor de 5 minutos habían pasado desde entonces.

Esta es la estructura de la tabla:

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

Todas las ideas y / o explicaciones?

¿Fue útil?

Solución

No se puede explicar el tema, pero sospecho que la operación - devuelve el resultado en un formato inesperado (tal vez incluyendo microsegundos o décimas?)

TIMEDIFF() .

  

retornos expr1 - expr2 expresado como un valor de tiempo. expr1 y expr2 son hora o fecha-y-tiempo expresiones, pero ambos deben ser del mismo tipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top