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

Bre*_*den 33 python django

我正在datetime为一个对象保存数据库.我想查询数据库并选择今天的任何内容date,而不是日期时间.

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

invoice_for_today = Invoice.objects.get(user=user, date=date.today())
Run Code Online (Sandbox Code Playgroud)

Ism*_*awi 50

我记得有计划添加一个__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))
Run Code Online (Sandbox Code Playgroud)

  • `__date`已在django1.9中实现.[文档】(https://docs.djangoproject.com/en/1.9/ref/models/querysets/#date). (6认同)
  • @TaufiqMuhammadi`date`是`datetime.date`.`from datetime import date`,或者只使用`datetime.date.today()` (4认同)
  • 我可以从哪里导入日期? (2认同)

小智 25

你也可以这样做:

today = date.today()
invoice_for_today = Invoice.objects.filter(date__year=today.year, date__month=today.month, date__day=today.day)
Run Code Online (Sandbox Code Playgroud)


小智 20

在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)
Run Code Online (Sandbox Code Playgroud)

在django> 1.9中,因为他们添加了date关键字

foo_for_today = Foo.objects.filter(datefield__date=datetime.date.today())
Run Code Online (Sandbox Code Playgroud)


Raj*_*nka 9

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


Ale*_*low 7

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))
Run Code Online (Sandbox Code Playgroud)

查询集 API


jtb*_*des 6

尝试使用键date__gte和date__lte.您可以传入两个日期时间对象,标记您要匹配的内容的边界.


Gal*_*cha 6

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

from datetime import datetime, timedelta

Entry.objects.filter(pub_date__gte = datetime.now() - timedelta(days=1)) 
Run Code Online (Sandbox Code Playgroud)