作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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/
我是一名优秀的程序员,十分优秀!