【发布时间】:2015-03-06 21:03:25
【问题描述】:
我在 Django 中有一个日期时间字段,我想根据时间对其进行过滤。我不关心具体的日期,但我想找到例如 7:30 之前的所有交易。
我知道我可以按小时和分钟过滤,例如:
Q(datetime__hour=7) & \
Q(datetime__minute=30)
但是,这会在 7:30 找到所有交易。您也无法申请 gte 或 lte。即
(Q(datetime__hour__lte=7) & \
Q(datetime__minute__lte=30)) | \
Q(datetime__hour__lt=7)
似乎唯一可能的解决方案是有许多查询,例如:
(Q(datetime__hour=7) & \
(Q(datetime__minute=30) | \
Q(datetime__minute=29) | \
Q(datetime__minute=28) | \
....
Q(datetime__minute=2) | \
Q(datetime__minute=1) | \
Q(datetime__minute=0))) | \
Q(datetime__hour=6) | \
Q(datetime__hour=5) | \
Q(datetime__hour=4) | \
Q(datetime__hour=3) | \
Q(datetime__hour=2) | \
Q(datetime__hour=1) | \
Q(datetime__hour=0)
但这似乎很荒谬。
有人有什么想法吗?
【问题讨论】:
-
试试这个 myClass.objects.filter(condition here).order_by('-datetime')
-
XORcist - 不是重复的。该链接完全相反。它想按日期过滤,忽略时间。我想按时间过滤,忽略日期。
-
Gaurav - 这只会以不同的方式排列结果。这不会过滤。
-
为什么不能使用您的 lte 解决方案?