django queryset过滤日期时间和日期

时间:2015-02-15 15:59:00

标签: python django date datetime

我有一个queryste:

winner_check = Winner.objects.filter(win_date=date.today())

其中win_date是datetime,date.today()仅给出日期...无论如何我可以将win_date转换为仅日期并过滤此查询集。

我想过滤所有具有相同日期的获奖者。

提前致谢。

3 个答案:

答案 0 :(得分:1)

你做不到。但是您可以从2个日期时间创建范围并通过它过滤您的查询集。您也可以按win_date__yearwin_date__monthwin_date__day单独过滤。

答案 1 :(得分:1)

您可以使用__year__month__day

进行过滤
today = date.today()
Winner.objects.filter(win_date__year=today.year,
                      win_date__month=today.month,
                      win_date__day=today.day)

docs

答案 2 :(得分:1)

最有效的方法是在今天/明天的日期之间使用两个日期时间之间的__range查找或__gte / __lt次查找的组合:

import datetime

today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
winner_check = Winner.objects.filter(win_date__gte=today,
                                     win_date__lt=tomorrow)

这会导致win_dateTODAY 0:00:00过滤到TODAY 23:59:59