在今天的Django日期查询日期时间

时间:2011-08-27 22:32:19

标签: python django

我将datetime保存在对象的数据库中。我想查询数据库并从今天date中选择任何内容,而不是日期时间。

最简单的方法是什么?这不起作用:

invoice_for_today = Invoice.objects.get(user=user, date=date.today())

7 个答案:

答案 0 :(得分:48)

我记得有计划添加__date字段查找以使其更容易,但因为它是“标准”的做法是

today_min = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
today_max = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
Invoice.objects.get(user=user, date__range=(today_min, today_max))

答案 1 :(得分:23)

您也可以这样做:

today = date.today()
invoice_for_today = Invoice.objects.filter(date__year=today.year, date__month=today.month, date__day=today.day)

答案 2 :(得分:17)

在django< 1.9

from django.utils.timezone import datetime #important if using timezones
today = datetime.today()
foo_for_today = Foo.objects.filter(datefield__year=today.year, datefield__month=today.month, datefield__day=today.day)

在django> 1.9中,因为他们added the date keyword

foo_for_today = Foo.objects.filter(datefield__date=datetime.date.today())

答案 3 :(得分:8)

obj = TeachersPlanner.objects.filter(date__startswith = date.today())

答案 4 :(得分:6)

尝试使用密钥date__gtedate__lte。您可以传入两个日期时间对象,标记您想要匹配的边界。

答案 5 :(得分:4)

在Django 1.9中有一个新的__date字段查找,您可以使用:

Entry.objects.filter(pub_date__date = datetime.date(2005,1,1)) Entry.objects.filter(pub_date__date__gt = datetime.date(2005,1,1))

Queryset API

答案 6 :(得分:1)

要从过去24小时获取条目,您可以使用:

com0com