Запрос даты и времени к сегодняшней дате в Джанго - PullRequest
30 голосов
/ 28 августа 2011

Я сохраняю datetime в БД для объекта. Я хотел бы сделать запрос к базе данных и выбрать что-нибудь из сегодняшнего дня date, а не из даты-времени.

Какой самый простой способ сделать это? Это не работает:

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

Ответы [ 7 ]

48 голосов
/ 28 августа 2011

Я помню, что планировалось добавить поиск поля __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))
24 голосов
/ 28 января 2013

Вы также можете сделать что-то вроде этого:

today = date.today()
invoice_for_today = Invoice.objects.filter(date__year=today.year, date__month=today.month, date__day=today.day)
18 голосов
/ 04 июля 2016

в Джанго <1,9 </p>

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, так как они добавили ключевое слово даты

foo_for_today = Foo.objects.filter(datefield__date=datetime.date.today())
8 голосов
/ 02 февраля 2015
obj = TeachersPlanner.objects.filter(date__startswith=date.today())
6 голосов
/ 28 августа 2011

Попробуйте использовать клавиши date__gte и date__lte. Вы можете передать два объекта даты и времени, отмечающие границы того, что вы хотите сопоставить.

4 голосов
/ 25 марта 2016

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

API Queryset

2 голосов
/ 17 января 2018

Для получения записей из За последние 24 часа вы можете использовать:

from datetime import datetime, timedelta

Entry.objects.filter(pub_date__gte = datetime.now() - timedelta(days=1)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...