mysql如何查询时间间隔大于5分钟的数据(时间从现在往前推)

以下为oracle的相关查询方法http://bbs.csdn.net/topics/390223691哪位大侠可以更改为mysql的。dtimename--------... 以下为oracle 的相关查询方法http://bbs.csdn.net/topics/390223691哪位大侠可以更改为mysql 的。
dtime name
----------------------- ----
2012-09-09 12:00:00.000 aaa
2012-09-09 12:03:00.000 aaa
2012-09-09 12:06:00.000 aaa
2012-09-09 12:09:00.000 aaa
2012-09-09 12:12:00.000 aaa
--------------------期待结果--------------------
dtime name
----------------------- ----
2012-09-09 12:00:00.000 aaa
2012-09-09 12:06:00.000 aaa
2012-09-09 12:12:00.000 aaa
展开
 我来答
6rl
2013-08-04 · TA获得超过704个赞
知道小有建树答主
回答量:580
采纳率:66%
帮助的人:377万
展开全部
select dtime,name from
(
select name,dtime,rank,ptime,ptime2 from(
select cg_tmp.*, @rownum :=@rownum + 1,
if(TIMESTAMPDIFF(MINUTE, @ptime,cg_tmp.dtime)<5,@rank:=@rank ,@rank:=@rank+1) as rank,
@ptime2:=cg_tmp.dtime as ptime2,
if(TIMESTAMPDIFF(MINUTE, @ptime,cg_tmp.dtime)<5,@ptime=null,@ptime:=@ptime2) as ptime
 from
(
select * from `timerecord`  order by dtime
) cg_tmp,
(select @rownum :=0 , @ptime := null ,@rank:=0,@ptime2 := null) a
)  result
) a
where ptime is not null

以前回答过类似的时间间隔问题。

更多追问追答
追问
很给力哦,虽然看不太懂,顺便问一下,我想在查询出的记录中,取末尾的N条记录,怎么改,需要升序排列。
追答
select * from (
select dtime,name from
(
select name,dtime,rank,ptime,ptime2 from(
select cg_tmp.*, @rownum :=@rownum + 1,
if(TIMESTAMPDIFF(MINUTE, @ptime,cg_tmp.dtime)<5,@rank:=@rank ,@rank:=@rank+1) as rank,
@ptime2:=cg_tmp.dtime as ptime2,
if(TIMESTAMPDIFF(MINUTE, @ptime,cg_tmp.dtime)<5,@ptime=null,@ptime:=@ptime2) as ptime
 from
(
select * from `timerecord`  order by dtime
) cg_tmp,
(select @rownum :=0 , @ptime := null ,@rank:=0,@ptime2 := null) a
)  result
) a
where ptime is not null
order by dtime desc limit 2 --这里取末尾的N条记录
) a order by dtime
novice_pegasus
2013-08-04 · TA获得超过624个赞
知道小有建树答主
回答量:722
采纳率:100%
帮助的人:650万
展开全部
这个得用存储过程了,一句话查询肯定解决不了。
delimiter //

Create Procedure findtime()
Begin
declare lastdtime datetime default null;
declare thisdtime datetime default null;
declare lastname varchar(10);
declare thisname varchar(10);

declare done tinyint default 0;

declare cur cursor for select dtime,name from `table`;
declare continue handler for sqlstate '02000' set done=1;
create temporary table if not exists `tmp`(dtime datetime, name varchar(10));
while done<>1 do
if lastdtime is null then
fetch cur into lastdtime,lastname;
else
fetch cur into thisdtime,thisname;
if timediff(thisdtime,lastdtime)>'00:05:00' then
insert into `tmp` (dtime,name)values(lastdtime,lastname);

set lastdtime=thisdtime;
set lastname=thisname;

end if;
end if;

end while;
select * from `tmp`;

End//
call findtime()//
追问
麻烦把内容详细解释一下好吗,学的不好,看的一知半解。拜托了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wy_1900
2013-08-04 · TA获得超过4503个赞
知道大有可为答主
回答量:4260
采纳率:63%
帮助的人:3416万
展开全部
SELECT * from table where
TIMEDIFF('1997-12-31 23:59:59', '1997-12-30 01:01:01')>'00:05:00';
追问
是上下记录时间比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式