【问题标题】:Django queryset based on comparing dates [duplicate]基于比较日期的Django查询集[重复]
【发布时间】: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 中的两个值

标签: sql django django-orm


【解决方案1】:

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

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

【讨论】:

  • 就是这样!不幸的是,在我的服务器中没有 DATEADD 函数,但我使用更简单的 SQL 查询来处理它:SELECT * FROM mytable WHERE (c_date+INTERVAL c_int)="2012-08-02";
猜你喜欢
  • 1970-01-01
  • 2014-06-25
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多