gpt4 book ai didi

Django-Postgres : how to group by DATE a datetime field with timezone enabled

转载 作者:行者123 更新时间:2023-11-29 11:58:37 24 4
gpt4 key购买 nike

我在使用 prostgresql 和 django 时遇到这个问题:

我有很多在特定日期的特定时间创建的事件,这些事件存储在日期时间字段 created 中。

  • 我希望根据created字段的日期部分进行聚合。最简单的例子是:本月每天有多少个事件?
  • created 字段是时区感知的。因此,结果应该根据用户所在的时区而变化。例如,如果您在 2017 年 10 月 2 日 23:30 UTC 时间创建了 2 个事件,如果您从 UTC-1 查看它们,您应该在 10 月 3 日看到它们00:30,总数应该添加到第三个。

我正在努力寻找适用于大量数据的解决方案。因此每天执行 SQL 语句不是一个选择。我想要的东西可以转化为:

SELECT count(*) from table GROUP BY date

现在我找到了问题第一部分的解决方案:

from django.db import connection
truncate_date = connection.ops.date_trunc_sql('day', 'created')
queryset = queryset.extra({'day': truncate_date})
total_list = list(queryset.values('day').annotate(amount=Count('id')).order_by('day'))

有没有办法添加 date_trunc_sql 函数用来计算日期的时区?或者在 date_trunc_sql 之前使用其他函数,然后链接该函数。

谢谢!

最佳答案

您可能正在寻找这个:timezone aware date_trunc function

但是请记住,这可能与您的 django 配置方式发生冲突。 https://docs.djangoproject.com/en/1.11/topics/i18n/timezones/

关于Django-Postgres : how to group by DATE a datetime field with timezone enabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667282/

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