我的表有每分钟的记录,现在我想以5分钟的间隔获取记录!
例如
order date
1 12:01
2 12:02
....
10 12:10
11 12:11
预期结果:订单6和11
可以在数据库级别完成吗?
我正在使用Django和MySQL
答案 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