Mysql 时差

Mysql 时差,mysql,datetime,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

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

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 

我认为问题在于您忘记检查两个公民行是否为同一公民。否则,您将为碰巧有
actenumber-1
的人拾取行

我还使用连接语法清理了查询,以便更清楚地了解连接逻辑与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

您知道DISTINCT对整个选定行有效吗?你说负值,这些行的c1.datecreation和c.datecreation的值是多少?实际上,我只是想计算datecreation之间的差异,它们只是同一个表中两个连续的RAW,向我们展示一些示例数据、当前输出,并告诉我们出了什么问题!