点击下面的链接查看图片。我需要用红色突出显示时间差,用蓝色突出显示时间差。然后把时间加在一起得到总数。
下面是显示所有记录的查询。前两个记录我需要得到的时间差,这将是大约3天4小时,最后两个记录应该只有2分钟。所以总共应该是3天4小时2分钟。查询图像
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
这有可能实现吗?我希望我说得很清楚。
谢谢您
1条答案
按热度按时间j2datikz1#
可以使用相关子查询来对齐计算的两个日期/时间引用。
在其他dbms系统中使用
lead()
可能会提供更方便的方法来获取下一个需要的createdate值。