计算出第1次看到和最后看到的mysql之间的时间差

时间:2017-09-25 14:34:16

标签: mysql sql

我已经看了一眼,尽管有类似的问题没有一个人安静地帮助我的最终目标,所以我希望有人可以为我提供一些亮点

我有一张桌子,我想计算出第一次进入的时间和最后一次出现的时间之间的时间差,但是我的问题是价值在一天中有几次进出表格,例如

| beacon | location | mac | date | time     |
|--------|----------|-----|------|----------|
| 53     | blue     | mac | date | 10:28:37 |
| 53     | blue     | mac | date | 10:28:48 |
| 53     | blue     | mac | date | 10:28:53 |
| 53     | blue     | mac | date | 14:02:12 |
| 53     | blue     | mac | date | 14:03:37 |
| 53     | blue     | mac | date | 14:03:58 |

实际上我想要更多的数据来计算出第一个看到的图A和最后一个看到的图B之间的时差

最大时差可能是半小时,所以我想到了

select*,timediff() from table where time > now() - interval 30 minute 

但不确定在timediff中使用什么变量

或我的另一个想法是将数字链接到颜色(位置)添加开始时间以及何时停止链接,例如数字不再用颜色添加结束时间

Mysql Table

感谢您阅读希望有人可以帮助哈哈

编辑:谢谢大家的建议我会给他们一个尝试抱歉我不是很清楚我的问题我的数据库是知道在一个表中看到了多长时间的灯塔(数字)但我的问题是同一个灯塔全天多次进入表中所以它已经看到一个灯塔的情况已经看到日志时间灯塔不再说半小时期间停止记录时间我希望更有意义谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用minmax函数来确定timediff的值。

例如:

select *, timediff(max(time),min(time)) from table where time > now() - interval 30 minute 

您也可以更有意义地包含一些分组。例如,如果要查找每个位置的timediff,可以按该列进行分组。我扩展了查询以使其更具可读性:

select 
    location, 
    timediff(max(time), min(time)) 
from 
    table
where 
    time > now() - interval 30 minute 
group by 
    location

答案 1 :(得分:0)

您可以使用以下查询作为示例,可能需要进行一些小修改。

SELECT *, 
MAX(`time`) AS `maxtime`,
MIN(`time`) AS `mintime`,
TIMEDIFF(MAX(`time`),MIN(`time`)) AS `timediff`
FROM `test` GROUP BY `beacon`,`date`
HAVING TIMEDIFF(`maxtime`,`mintime`)>=0
ORDER BY `timediff` DESC;

您可以在SQL-Fiddle上查看结果。