时差MySQL

时间:2015-02-19 14:59:12

标签: mysql datetime

我想计算同一用户在两个连续条目之间的持续时间,以便能够知道用户每次完成输入数据所花费的时间。我使用了以下查询,但它给出了一些负值和重复结果。

SELECT distinct u.name, u.firstname, c1.actenumber, c.actenumber,
TIME_TO_SEC(TIMEDIFF(c1.datecreation, c.datecreation)) as difference 
FROM user u, citizen c1, citizen c 
WHERE u.UTILID= c1.USERID 
  AND u.profil=0 
  AND c1.actenumber=c.actenumber-1 

1 个答案:

答案 0 :(得分:0)

我认为问题是你忘了检查两个公民行是否属于同一个公民。否则,您将为遇到actenumber-1的任何人选择行。

我还使用JOIN语法清理了查询,以便更清楚连接逻辑与WHERE约束的关系。

SELECT distinct u.name, u.firstname, c1.actenumber, c2.actenumber,
TIME_TO_SEC(TIMEDIFF(c1.datecreation, c2.datecreation)) as difference 
FROM user u
JOIN citizen c1
  ON u.UTILID = c1.USERID
JOIN citizen c2
  ON c1.USERID = c2.USERID          AND
     c1.actenumber=c2.actenumber-1
WHERE u.profil=0