MySQL timediff在同一列上的两个时间戳之间

时间:2017-06-14 00:39:04

标签: mysql phpmyadmin

我的MySQL数据库中有一个名为“history”的表,它是一个文件历史运动(一种Log)的集合,如下所示:

| file_id | origin | destination |         date        | user |
|   1     |   2    |      3      | 2017-06-11 23:46:00 |  1   |
|   1     |   1    |      2      | 2017-06-11 17:32:00 |  1   |

原始列和目标列是存储在表'places'中的地点的外键。因此,例如,文件1在2号位置的时间应该等于:

到达时间 AKA 日期,无论哪一行都有file_id = 1且目的地= 2

出发时间 AKA 日期,无论哪一行都有file_id = 1且原点= 2

我尝试通过phpMyAdmin进行以下SQL查询来测试:

SELECT TIMESTAMPDIFF
(HOUR,
(SELECT date FROM `historia` WHERE `file_id`='1' AND `destination`='1'),
(SELECT date FROM `historia` WHERE `file_id`='1' AND `origin`='1'))

然而,这是“#2014 - 命令不同步;您现在无法运行此命令”错误消息。

查询这两行之间的时差的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

执行以下语句(语句后跟其结果集):

select timediff(h1.date,h2.date) from historia h1 join historia h2 where h1.file_id = h2.file_id and h1.origin = h2.destination;
+---------------------------+
| timediff(d1.date,d2.date) |
+---------------------------+
| 06:14:00                  |
+---------------------------+
1 row in set (0.00 sec)