[英]Calculating time between two dates per day
我正在研究一个项目(从手机等设备中)搜索wifi信号的项目。 它检测在wifi传感器半径内的每个mac地址。 然后,这些数据从服务器发送到数据库,该数据库使用报告工具显示统计信息。 可以在商店中使用它来研究客户行为。
数据如下所示:
问题是,我想知道两次输入之间的时间,问题是,如果一个人在商店中停留10分钟,它将显示很多地址,我想计算的是两次访问之间的差额。 因此,我需要做的是计算当天到第二天之间的时间。
然后,我想在下面的表格中显示此内容。
current time | next time they came | Time between visist
-------------------------------------------------------------------
*current time* | *other day* | *Time between visits*
我不知道该怎么做,总是欢迎抽象思维
附言:如果缺少任何信息,请发表评论。 我是新来的论坛。
首先,您必须将time
字段转换为其可读的日期部分
select date(from_unixtime(`time`)) from yourTable;
此值可以是自我join
的联接条件
select t1.address,
from_unixtime(t1.`time`),
min(from_unixtime(t2.`time`))
from yourTable t1
left join
yourTable t2
on t1.address = t2.address and
date(from_unixtime(t1.`time`)) < date(from_unixtime(t2.`time`))
group by t1.address, from_unixtime(t1.`time`)
对于每个地址和每个访问时间,这将使您在不同的日期获得最早的访问时间。
从那里您可以返回时差
select tt.address,
tt.visit,
tt.next_visit,
timediff(coalesce(tt.next_visit, tt.visit), tt.visit) as `interval`
from (
select t1.address,
from_unixtime(t1.`time`) as visit,
min(from_unixtime(t2.`time`)) as next_visit
from yourTable t1
left join
yourTable t2
on t1.address = t2.address and
date(from_unixtime(t1.`time`)) < date(from_unixtime(t2.`time`))
group by t1.address, from_unixtime(t1.`time`)
) tt
coalesce
是为了避免在timediff
函数中为null
,这将在每个地址的最后一次访问中发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.