繁体   English   中英

计算每天两个日期之间的时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM