点击下面的链接查看图片。 我需要以红色突出显示时间差异,以蓝色突出显示时间差异。然后将时间相加即可得出总数。
下面是将显示所有记录的查询。 我需要获得前2条记录的时差,这将是3天4个小时左右,而最后2条记录应该只有2分钟。因此,总共应该在3天4小时2分钟左右。 query image
select so
, createDate
, o
, n
from userTrans
where ( n = 10 OR o = 10 ) and so = 'g220'
下面将显示我将记录分组以获得总时间。这不是我想要的,因为它正在获取最小和最大时间差异。结果证明是32小时。
select so
, min(createDate) minDate
, max(createDate) maxDate
, TIMESTAMPDIFF(MINUTE, min(createDate), max(createDate)) diff
, CONCAT(
FLOOR(HOUR(TIMEDIFF(min(createDate), max(createDate))) / 24), ' days ',
MOD(HOUR(TIMEDIFF(min(createDate), max(createDate))), 24), ' hours ',
MINUTE(TIMEDIFF(min(createDate), max(createDate))), ' minutes') diff1
, count(*) hits
from userTrans
where ( n = 10 OR o = 10 ) and so = 'g220'
group by so
order by TIMESTAMPDIFF(MINUTE, min(createDate), max(createDate)) DESC
这有可能实现吗?我希望我很清楚。
谢谢
答案 0 :(得分:0)
您可以使用相关子查询来对齐2个日期/时间参考以进行计算。
SELECT
*
, TIME_TO_SEC(TIMEDIFF(createDate,nextcreatedate))
FROM (
SELECT
so
, createDate
, (
SELECT
createDate
FROM table1 AS t2
WHERE t2.so = t1.so
AND t2.createDate > t1.createDate
ORDER BY
CreaDate
LIMIT 1
)
AS nextcreatedate
, n
, test
FROM table1 AS t1
WHERE o = 0
) d
在其他使用lead()
的dbms系统中,可以更方便地获取下一个所需的createdate值。