2017-04-24 187 views
0

我正在研究一个项目,在那里我搜索一个wifi信号(从手机等)。它检测到无线传感器半径周围的每个mac地址。然后将这些数据从服务器发送到数据库,该数据库使用报告工具显示统计信息。这可以在商店中用于研究客户行为。计算每天两个日期之间的时间

这是数据的样子:

enter image description here

的事情是,我想知道条目之间的时间,问题是,如果一个人在店里停留10分钟就西港岛线显示很多地址,我想要计算的是访问之间的差异。所以我需要做的就是计算当天到他们来的第二天之间的时间。

然后我想在下面的表格中显示它。

current time  | next time they came | Time between visist 
------------------------------------------------------------------- 
*current time*  | *other day*   | *Time between visits* 

我不知道我应该怎么做,抽象思维总是欢迎

P.S如果有任何丢失的信息,请评论。我是新来的论坛。

+0

@RiggsFolly它重复吗?这是关于MySQL,链接的问题是关于PHP ... –

+0

@RiggsFolly这个问题是一个mySSQL的问题?所以它不是重复的? – tom

+0

@StefanoZanini啊,你可能是对的。我将删除DUP。 – RiggsFolly

回答

0

所有您需要的是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 

的​​3210是为了避免有nulltimediff功能,这将发生的每个地址的最后一次访问。

+0

我明白你的意思,但我得到一个错误消息https://gyazo.com/5172fa05e9a6876eeef070f710e94179 – tom

+0

这是因为间隔是一个关键字,对不起!你可以使用另一个别名(比如intvl或其他)或者用反引号包围这个单词。我用后面的选项编辑了我的答案 –

+0

Awhhh我明白了!谢谢!只有现在我收到此错误消息https://gyazo.com/4a5ff42cbd82587b0cbe8affd2024cea – tom

相关问题