gpt4 book ai didi

Django从日期时间开始按日期分组

转载 作者:行者123 更新时间:2023-12-04 11:24:25 27 4
gpt4 key购买 nike

我正在尝试计算用户从 DateTime 字段注册的日期。在数据库中,它存储为“2016-10-31 20:49:38”,但我只对日期“2016-10-31”感兴趣。

原始 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 ,我认为这是正确的查询集,但它不起作用:
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 出了点问题。

如果有人比我更了解这一点,并能指出我正确的方向,那将不胜感激。

谢谢你的帮助。

最佳答案

我试图做一些非常相似的事情并且遇到了和你一样的问题。我设法通过添加 order_by 解决了我的问题应用 TruncDate 后的条款注解。所以我想这也应该对你有用:

User.objects.all()
.filter(course='Course 1')
.annotate(registered_date=TruncDate('registered_at'))
.order_by('registered_date')
.values('registered_date')
.annotate(**{'total': Count('registered_at')})

希望这可以帮助?!

关于Django从日期时间开始按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com