0
我只是试图插入两行与当前的日期时间,然后计算自该日期以来的经过时间。 下面是从我的表之后两次插入和使用NOW()函数来设置的时间戳的行:行的插入与用户id等于2后MySQL:当减去日期值和NOW()的奇怪结果
mysql> select * from pendingActivations;
+--------+------------+---------------------+
| userId | code | timestamp |
+--------+------------+---------------------+
| 2 | aaa | 2010-08-23 17:04:02 |
| 2345 | alkfjkla23 | 2010-08-23 16:59:53 |
+--------+------------+---------------------+
几分钟,我执行以下命令,我希望能给我从每行的时间戳开始的时间。下面是结果:
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 | |
+-----------+-------------+------+-----+---------+-------+
任何想法和/或解释?
+1我同意使用TIMEDIFF的建议。解释是MySQL将这些值视为yyyyMMddHHmmss格式的数值,然后对这些数值进行相减。 – 2010-08-23 15:46:21