MySQL如何计算同一张表中相邻两行之间的时间差

MySQL如何计算同一张表中相邻两行之间的时间差
具体格式如下,要求出同一个用户的记录中相邻两行的时间差,注意是计算同一个用户的相邻行,感激不尽!
user_id datetime
0 2010-08-12 15:50:54
0 2010-08-12 19:40:25
0 2010-08-13 07:53:34
1 2010-08-12 19:40:25
1 2010-08-13 04:35:28
cinci 1年前 已收到1个回答 举报

堂堂翰林 春芽

共回答了17个问题采纳率:88.2% 举报

多行的你怎么算?应该是一个用户的最大和最小时间差吧?说下规则

1年前 追问

4

cinci 举报

就是要统计相邻两条记录间的时间间隔……针对给出的5条记录,那就是算出0号用户的两个时间间隔以及1号用户的一个时间间隔……结果随便存入哪儿都ok,可以建个新表来存,也可以存txt,目的就是为了统计相邻的时间间隔的分布特征……
感觉用Mysql存储过程应该可以实现吧,不过我目前还没学会……求指教!感谢!

举报 堂堂翰林

create procedure proc_t()
begin
create table t_test1 (
rowid bigint auto_increment primary key,
user_id varchar(20),
datetime datetime
);
truncate TABLE t_test1;
insert into t_test1 (user_id,datetime ) select user_id,datetime from test1 order by user_id;
select
a.user_id '用户id',a.datetime '当前日期',
(select c.datetime from t_test1 c where c.user_id = a.user_id and c.rowid>a.rowid limit 1) '下行日期',
TIMESTAMPDIFF(HOUR,str_to_date(a.datetime,'%Y-%m-%d %T'),str_to_date((select b.datetime from t_test1 b where b.user_id = a.user_id and b.rowid>a.rowid limit 1),'%Y-%m-%d %T')) '时间差'
from t_test1 a;
drop table t_test1;
end
运行结果
用户id 当前日期 下行日期 时间差
0 2014-07-08 01:11:00 2014-07-08 07:11:20x09 6
0 2014-07-08 07:11:20 2014-07-10 00:11:41x09 41
0 2014-07-10 00:11:41
1 2014-07-08 03:11:00 2014-07-09 02:10:00 22
1 2014-07-09 02:10:00
计算相邻时间差,用的存储过程
时间差单位小时,如果要精确到秒的话自己完善吧
你这个要是有一个自增id的主键的话就不用存储过程,一句sql搞定
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 6.315 s. - webmaster@yulucn.com