code: def get_date_range(year=None, month=None, day=None):
      
      if year is None:
          return None
  
      if month is None:
          # year only
          start = datetime(year, 1, 1, 0, 0, 0, tzinfo=utc)
          end = datetime(year, 12, 31, 23, 59, 59, 999, tzinfo=utc)
          return (start, end)
  
      if day is None:
          # year + month only
          start = datetime(year, month, 1, 0, 0, 0, tzinfo=utc)
          end = start + timedelta(days=monthrange(year, month)[1], microseconds=-1)
          return (start, end)
      else:
          # Exact day
          start = datetime(year, month, day, 0, 0, 0, tzinfo=utc)
          end = start + timedelta(days=1, microseconds=-1)
          return (start, end)
docs: Return a start..end range to query for a specific month, day or year.