Django filter datetime base on date only Django filter datetime base on date only database database

Django filter datetime base on date only


Best Option (Django 1.9+ . - For datetime fields, casts the value as date. Allows chaining additional field lookups. Takes a date value.)

# Assumes the start_date variable is a datetime.date() instance or# a value such as '2019-07-11'.qs.filter(start_date__date=start_date)# Note that you can also "chain" this resultqs.filter(start_date__date__lte=start_date)

Options for Django < 1.9

One option (break the date down in the filter):

start_date = datetime.strptime(start_date, DATE_FORMAT)qs = qs.filter(    start_date__year=start_date.year,    start_date__month=start_date.month,    start_date__day=start_date.day)

Another option (set the min/max time for the date and use range):

from datetime import datetimestart_date = datetime.strptime(start_date, DATE_FORMAT)start_date_range = (    # The start_date with the minimum possible time    datetime.combine(start_date, datetime.min.time()),    # The start_date with the maximum possible time    datetime.combine(start_date, datetime.max.time()))qs = qs.filter(start_date__range=start_date_range)