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

时间:2010-03-19 20:51:48

标签: sql mysql django

我的表有每分钟的记录,现在我想以5分钟的间隔获取记录!

例如

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

 10   12:10
 11   12:11

预期结果:订单6和11

可以在数据库级别完成吗?

我正在使用Django和MySQL

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

您是否希望根据一小时内的十二分钟间隔对订单进行分组?以五分钟为间隔,我的意思是像这样的间隔映射的分钟:(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)

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

答案 2 :(得分:0)

如果我明白你想要什么,

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

我正在这样做,因为我没有一个mysql数据库在这里玩

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

(= 1将使你可以被5 + 1整除,所以6,11,16等)

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

有关MOD功能的更多信息,请参阅this page

相关问题