当前位置: 首页 > 面试题库 >

日期时间对象上的Django F表达式

谢铭
2023-03-14
问题内容

我的模型是:

class Test():
   date1 = models.DateTimeField()
   date2 = models.DateTimeField()

我可以使用以下查询找出date2大于的对象date1

Test.obejcts.filter(date2__gt=F('date1'))

我想找到所有date2大于date1一年的物体。
如何根据date1和之间的差异找出对象date2


问题答案:

通用解决方案:

您可以更改annotate日期,然后对照timedelta(days=365)(与@Anonymous在他的评论中建议的内容非常接近)进行检查:

Test.objects.annotate(
    duration=F('date2') - F('date1')
).filter(duration__gt=timedelta(days=365))

PostgreSQL特定解决方案:

如果您正在使用PostgreSQL,则可以从此答案中得到另一个选择:

from django.db.models import F, Func

Test.objects.annotate(
    duration = Func(F('date2'), F('date1'), function='age')
).filter(duration__gt=timedelta(days=365))


 类似资料:
  • 由来 考虑工具类的局限性,在某些情况下使用并不简便,于是DateTime类诞生。DateTime对象充分吸取Joda-Time库的优点,并提供更多的便捷方法,这样我们在开发时不必再单独导入Joda-Time库便可以享受简单快速的日期时间处理过程。 说明 DateTime类继承于java.util.Date类,为Date类扩展了众多简便方法,这些方法多是DateUtil静态方法的对象表现形式,使用D

  • 问题内容: 如何对日期和/或日期时间对象列表进行排序?接受的答案在这里是不是为我工作: 问题答案: 你得到,因为它运行 在原地 ,这意味着它不返回任何东西,但修改列表本身。您只需要呼叫而无需再次分配。 有一个内置函数,该函数返回列表的排序版本-也会执行您想要的操作。

  • 问题内容: 我有一个网络表单,用户可以在其中从日历弹出窗口中选择日期,并从下拉菜单中选择时间。目前,我正在尝试使用Date对象存储日期。 这个对象的输出类似于: 1970年1月1日,00:00:00 GMT 我真正想做的是将其分开并以类似 27/02/2013 的格式存储日期,并以24小时格式(例如 23:45) 将时间作为单独的对象。我不确定如何用Java做到这一点。 使用SimpleDateF

  • 问题内容: 为什么json序列化不适用于datetime对象。据我了解json序列化,任何对象的基本思想都可以调用 内置函数,然后对作为响应得到的对象进行urlencode。但是在日期时间的情况下,我得到以下错误 虽然有一种方法可以将已经可用的对象进行字符串化,但是似乎有意识地决定不这样做,为什么会这样呢? 问题答案: 不,它在模块中无法正常工作。该模块为您提供了默认的编码器:。您需要扩展它以提供

  • 问题内容: 如何将类似“ 01-Jan-1995”的字符串解析为Python对象? 问题答案: 总体来说,您可以使用或模块中的函数来分析日期和时间字符串。您的示例可以解析为: 请注意,解析月份的名称是与语言环境相关的。下表显示了用于解析日期和时间的各种格式的指令。

  • 问题内容: 寻找时间平均问题的最快解决方案。 我有一个日期时间对象列表。需要找到时间的平均值(不包括年,月,日)。这是到目前为止我得到的: 问题答案: 这是解决此问题的更好方法 生成日期时间样本 平均20m次 结果为timedelta(请注意,这需要numpy 1.7和pandas 0.13 ,很快就会出现) 以秒为单位(这适用于熊猫0.12,numpy> = 1.6)。