我的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 - 命令不同步;您现在无法运行此命令”错误消息。
查询这两行之间的时差的正确方法是什么?
答案 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)