日期时间列的时差

时间:2017-11-29 06:07:15

标签: mysql

我有一个mysql表,它将提供有关用户使用的信息。其中3个MySQL列是模块,Time1,Time2 。 我想获取Time1和amp;之间的时差。时间2 即Module = started& 'Time1'和Module = end& 'Time2',我也想考虑开始和结束组合。休息可以忽略。

如屏幕截图所示,谢谢。

我还创建了相同的数据http://sqlfiddle.com/#!9/1361c5,请使用它。

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试以下查询

SELECT
  q1.time1,
  q2.time2,
  UNIX_TIMESTAMP(q2.time2)-UNIX_TIMESTAMP(q1.time1) seconds
FROM
  (
    SELECT *,@i1:=IFNULL(@i1,0)+1 num
    FROM LogData
    ORDER BY time1
  ) q1
JOIN
  (
    SELECT *,@i2:=IFNULL(@i2,0)+1 num
    FROM LogData
    ORDER BY time1
  ) q2
ON q2.num=q1.num+1 AND q1.status='started' AND q2.status='end'

SQL小提琴 - http://sqlfiddle.com/#!9/fbbd89/7