开发者

Query datetime by today's date in Django

I'm saving datetime in开发者_StackOverflow社区 the db for an object. I'd like to query against the db and select anything from todays date, not datetime.

What's the easiest way to do this? This doesn't work:

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


I remember there being plans to add a __date field lookup to make this easier, but as it stands the "standard" way of doing it is

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))


You can also do something like this:

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


in 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)

in django>1.9, as they added the date keyword

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


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


To get entries from the Last 24 hours you can use:

from datetime import datetime, timedelta

Entry.objects.filter(pub_date__gte = datetime.now() - timedelta(days=1)) 


There is a new __date field lookup in Django 1.9 you can use:

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


Try using the keys date__gte and date__lte. You can pass in two datetime objects marking the boundaries of what you want to match.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜