通过 django 查询使用 Redshift 的原生“AT TIMEZONE”?

Posted

技术标签:

【中文标题】通过 django 查询使用 Redshift 的原生“AT TIMEZONE”?【英文标题】:Using Redshift's native 'AT TIMEZONE' through django query? 【发布时间】:2017-10-18 08:33:44 【问题描述】:

所以我有这样的查询

query = MyModel.objects.filter(some_filter).filter(eventTime__date__gte=start_date).filter(eventTime__date__lte=end_date)....

我要连接的红移表的 eventTime 为 UTC。它让我可以像

一样使用本机 SQL 进行查询
select eventtime AT TIME ZONE 'MST' from mymodel limit 1;

如何在 django 查询格式中使用 AT TIME ZONE 'MST'

【问题讨论】:

【参考方案1】:

就“在时区”而言,postgres 和 redshift 是相同的。

这应该会有所帮助 https://github.com/counsyl/django-postgres-timezones

Django 在构造查询时不使用 at time zone 语法,因此如果 USE_TZ 为 False,则 Django 加载的时间戳将(通过 Postgres)转换为 settings.TIME_ZONE 时区(请记住 Django 配置与该时区的数据库连接) 并作为朴素的 Python 日期时间存储在您的模型中

【讨论】:

以上是关于通过 django 查询使用 Redshift 的原生“AT TIMEZONE”?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 aws redshift 管理 django'orm?

如何定义 Lambda 变量以通过 API Gateway 查询 Redshift

批量插入的 Redshift 查询队列使用情况

使用 RedShift 作为附加的 Django 数据库

何时通过 AWS Glue ETL 使用 Amazon Redshift 频谱来查询 Amazon S3 数据

使用 django-redshift-backend 找不到 pg_config 可执行文件 [重复]