[Django]-Query datetime by today's date in Django

67πŸ‘

βœ…

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))
πŸ‘€Ismail Badawi

39πŸ‘

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)
πŸ‘€Peppelorum

25πŸ‘

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())
πŸ‘€Marco Silva

14πŸ‘

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

9πŸ‘

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)) 
πŸ‘€Gal Bracha

8πŸ‘

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

6πŸ‘

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.

πŸ‘€jtbandes

Leave a comment