MySQL: странный результат при вычитании значения даты и сейчас ()

StackOverflow https://stackoverflow.com/questions/3549087

Вопрос

Я просто пытался вставить два строка с текущим потоком DateTime, а затем рассчитал прошедшее время с этой даты. Вот строки из моего стола после двух вставок и используя сейчас () функцию, чтобы установить временную метку:

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

Несколько минут после вставки строки с userId, равным 2, я выполнил следующую команду, которую я надеялся, даст мне прошедшее время от временного отметки для каждой строки. Вот результаты:

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

Интересно, как вторая ряд имеет значение, которое было огромное значение ELAPSEDSeconds, которое указывает на то, что прошло ровно 1 час, 16 минут и 25 секунд, хотя легко увидели, что через 5 минут прошло с тех пор.

Вот структура таблицы:

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

Любые идеи и / или объяснения?

Это было полезно?

Решение

Я не могу объяснить проблему, но я подозреваю - Операция возвращает результат в неожиданном формате (может быть, включая микросекунды или десятые?)

я хотел бы использовать TIMEDIFF().

возвращается expr1expr2 выражается как ценность времени. EXPR1 и expr2 - это выражения времени или даты и времени, но оба должны быть одинакового типа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top