基于比较日期的Django查询集[重复]

Posted

技术标签:

【中文标题】基于比较日期的Django查询集[重复]【英文标题】:Django queryset based on comparing dates [duplicate] 【发布时间】:2012-08-05 08:22:23 【问题描述】:

可能重复:How do you select between two dates with Django

我的 django 模型包含 2 个字段 - c_datec_int。因为我在创建查询方面真的很弱......有没有办法从数据库中只获取那些满足这一点的记录:c_date+timedelta(days=c_int)=date.today?我想在数据库级别执行此操作,因为它比获取所有记录并比较所有记录的日期要快。

【问题讨论】:

并不是因为比较是基于 DB 中的两个值 【参考方案1】:

您应该使用QuerySet.extra 来构造复杂的WHERE 子句。特别是针对您的要求,您应该检查您选择的数据库的 DATEADD 函数的可用性。

虽然,根据您的数据集有多大以及您需要多久运行一次此查询,另一种选择是进行迁移,并在创建实例时立即计算日期和偏移量的总和——您可以创建自定义 ModelForm 以继续允许用户指定 c_int 作为天数的偏移量。

【讨论】:

就是这样!不幸的是,在我的服务器中没有 DATEADD 函数,但我使用更简单的 SQL 查询来处理它:SELECT * FROM mytable WHERE (c_date+INTERVAL c_int)="2012-08-02";

以上是关于基于比较日期的Django查询集[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Django 查询集转换为列表 [重复]

django 查询集按小时、分钟和秒排序

获取基于字段的唯一对象的查询集 - Django

Django在查询集结果上添加附加字段[重复]

Django查询集获得精确的多对多查询[重复]

Django 仅基于日期过滤日期时间