我正在計數用戶從DateTime字段註冊的日期。數據庫中存儲爲'2016-10-31 20:49:38',但我只對日期'2016-10-31'有興趣。Django計數組從日期時間的日期
原始SQL查詢:
select DATE(registered_at) registered_date,count(registered_at) from User
where course='Course 1' group by registered_date;
有可能使用「額外」的,但我讀過這個被廢棄,不應該做的。它的工作原理如下:
User.objects.all()
.filter(course='Course 1')
.extra(select={'registered_date': "DATE(registered_at)"})
.values('registered_date')
.annotate(**{'total': Count('registered_at')})
有沒有可能不使用額外的?
我讀到TruncDate可以用,我認爲這是正確的queryset但它不工作:
User.objects.all()
.filter(course='Course 1')
.annotate(registered_date=TruncDate('registered_at'))
.values('registered_date')
.annotate(**{'total': Count('registered_at')})
我得到<QuerySet [{'total': 508346, 'registered_date': None}]>
所以有一些與TruncDate走錯了。
如果有人比我更瞭解這一點,並可以指出我正確的方向,將不勝感激。
感謝您的幫助。
我只是使用額外的,這正是它所做的。目前還沒有廢棄,不要認爲它不會很快,也不是沒有先給我們一些替代解決方案,因爲目前它是這類問題的唯一選擇。所以我不會擔心。 – serg