Вот интересная техника. Я использовал процедуру startswith, реализованную с Django на MySQL, чтобы добиться результата только поиска даты и времени только с даты. В принципе, когда Django выполняет поиск в базе данных, он должен выполнить преобразование строки для объекта хранения DATETIME MySQL, поэтому вы можете отфильтровать его, оставив временную метку даты - таким образом% LIKE% соответствует только дате объект, и вы получите каждую метку времени для данной даты.
datetime_filter = datetime(2009, 8, 22)
MyObject.objects.filter(datetime_attr__startswith=datetime_filter.date())
Это будет выполнить следующий запрос:
SELECT (values) FROM myapp_my_object \
WHERE myapp_my_object.datetime_attr LIKE BINARY 2009-08-22%
Оператор LIKE BINARY в этом случае будет соответствовать все на дату, независимо от того, Отметка времени. Включая такие значения, как:
+---------------------+
| datetime_attr |
+---------------------+
| 2009-08-22 11:05:08 |
+---------------------+
Надеюсь, это поможет всем, пока Django не выйдет с решением!
Это один из раздражений Джанго. Учитывая, что это простой и распространенный случай использования, нет простого способа добиться этого. – rubayeet