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,向我们展示一些示例数据、当前输出,并告诉我们出了什么问题!