如何从特定时间间隔的数据库中获取记录?

问题描述:

我的表格有每分钟的记录,现在我想以5分钟的间隔读取记录!如何从特定时间间隔的数据库中获取记录?

例如

order date 
1 12:01 
2 12:02 
.... 

10 12:10 
11 12:11 

预期结果:订购6和11

它可以在数据库级别做什么?

我使用Django与MySQL

+1

this page你可以添加你想要检索什么数据的例子吗? – Dominik 2010-03-19 20:56:48

+2

以5分钟的时间间隔? 您希望每5分钟产生一个记录集,或者您想要从特定的5分钟间隔读取记录? (谢谢你指出它Ignacio:D) – AlexRednic 2010-03-19 21:03:24

+0

我认为你需要澄清你的问题,这是非常容易混淆 – 2010-03-20 23:36:23

SomeModel.objects.extra(select={'fiveminutes': 'MINUTE(date)%5=0'}, 
    where='fiveminutes=1') 
+0

+1删除我的答案这一个:) – Andy 2010-03-19 21:09:07

你想对基于在一个小时的十二五分钟的时间间隔组的订单?以5分钟为间隔,我的意思是这样一段时间间隔映射:(0..4 => 0,5..9 => 1,10..14 => 2,...)。

all_with_interval = SomeModel.objects.extra(
     select={'interval': "strftime('%%M', date)/5"}) 
just_minutes_5_to_9 = all_with_interval.extra(
     where=["interval=%d"], params=[0]) 

或者,也许你想从一个给定的START_TIME一个五分钟的范围:)

end_time = start_time + datetime.timedelta(minutes=5) 
start_plus_5_inclusive = SomeModel.filter(date__range=(start_time, end_time) 
start_plus_5_exclusive = start_plus_5_inclusive.exclude(end_time) 

的排除(在那里,因为range filter是包容性的,你可能要排除这个当前问题的END_TIME 。如果您不排除end_time,您可以在5分钟+ 1秒的时间范围内获取记录。

如果我知道你想什么,

例如,在表中每5记录?或者换句话说,每个记录的顺序可以被5整除?

我从我的脑袋做这个,因为我没有一个MySQL数据库在这里玩

SELECT * from Table where (order MOD 5) = 1; 

(= 1会给你整除5 +1所以6,11,16等)

尝试一下,看看你是否弄湿你要找的东西。

更多关于MOD功能