Is there any way to “group by” by date with Django.models when my MySQL field has hours/min/second as well?

StackOverflow https://stackoverflow.com/questions/11255833

  •  18-06-2021
  •  | 
  •  

문제

I want to query to MySQL using Django.models, but since I put my created_at (Datetime field) with datetime.datetime.now(), it seems to hard to "group by" with each date. I made a query like this:

start = time.strptime("2012/6/25","%Y/%m/%d")
end = time.strptime("2012/6/26","%Y/%m/%d")
unix_start= time.mktime(start)
unix_end = time.mktime(end)

Mymodels.objects.filter(created_at__range[datetime.datetime.fromtimestamp(unix_start),datetime.datetime.fromtimestamp(unix_end]).values("~~~~~").annotate(player_id=Count("player_id"))

but I guess this query is too heavy for network.Is there any way to "group by" by datetime.date or use (date() for MySQL)in Django.models when my MySQL data is datetime.datetime.now()?

도움이 되었습니까?

해결책

I use PostgreSQL date_trunc() to group values by a date when the dates are saved as Datetime. I think you can use something like this with MySQL:

select_date = {"date": """DATE_FORMAT(start, '%Y-%m-%d')"""}
query = query.extra(select=select_date).values('date')
query = query.annotate(player_id=Count('player_id', distinct=True)).order_by('date')
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top