Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:在减去日期值和NOW()时出现奇怪的结果_Mysql_Datetime_Time_Timestamp_Elapsedtime - Fatal编程技术网

MySQL:在减去日期值和NOW()时出现奇怪的结果

MySQL:在减去日期值和NOW()时出现奇怪的结果,mysql,datetime,time,timestamp,elapsedtime,Mysql,Datetime,Time,Timestamp,Elapsedtime,我只是尝试用当前日期时间插入两行,然后计算自该日期以来经过的时间。 以下是我的表中插入两次并使用NOW()函数设置时间戳后的行: mysql> select * from pendingActivations; +--------+------------+---------------------+ | userId | code | timestamp | +--------+------------+---------------------+ |

我只是尝试用当前日期时间插入两行,然后计算自该日期以来经过的时间。 以下是我的表中插入两次并使用NOW()函数设置时间戳后的行:

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

有什么想法和/或解释吗?

我无法解释这个问题,但我怀疑
-
操作会以意外的格式返回结果(可能包括微秒或十分之一?)

我会用

返回表示为时间值的
expr1
expr2
。expr1和expr2是时间或日期和时间表达式,但两者必须是同一类型


+1我同意使用TIMEDIFF的建议。原因是MySQL将这些值视为yyyyMMddHHmmss格式的数值,然后对这些数值进行减法运算。