首页 > 解决方案 > Django:如何通过忽略秒/毫秒差异来区分 DateTimeField

问题描述

在 Django 中,我有一个看起来像这样的模型:

class Foo(models.Model):
   ...
   created = models.DateTimeField(default=None)
   ...

我尝试像这样查询:

q = Foo.objects.values('created').distinct()

到目前为止一切都很好。

问题是,如果我创建的记录相隔几秒或几毫秒,我想将它们计为一条记录。

因此,只有相隔一分钟创建的查询才会被检索为两个单独的查询。怎么做?谢谢。

编辑: Trunc是一个不错的选择,但没有准确回答这个问题。

举个例子:如果 中有两条记录DB,在第一条记录中,该created字段的值为:

2020-02-23 12: 19: 59.000000

在第二个:

2020-02-23 12: 20: 01.000000

Trunc将检索两条记录,因为它们是两个单独的分钟。

但我只想检索一条记录,因为两条记录之间的时间差不到一分钟..

标签: sqldjangodjango-modelsdjango-orm

解决方案


您可以使用 Django Trunc()函数将其截断为所需的分辨率:

from django.db.models.functions import Trunc    

Foo.objects.annotate(created_minute=Trunc('created','minute'))
     .values('created_minute').distinct()

推荐阅读