如何比较只有时间戳的字段的日期与时区字段的小于或等于

时间:2018-03-09 18:54:59

标签: python django django-models django-views

我使用默认auth_user表格,其字段为date_joined,类型为timestamp with time zone

我只想检查ltegte的比较,只考虑其日期而不是时间和区域。

def get_fm_objects(self, filters):
    fm = FacilityManager.objects.all().order_by('-id')
    if filters['from_date']:
        fm = fm.filter(user__date_joined__gte=filters['from_date'])
    if filters['to_date']:
        fm = fm.filter(user__date_joined__lte=filters['to_date'])
    return fm

此处FacilityManager是另一个模型,filters['from_date']filters['to_date']是我的输入日期(它只包含日期。例如:2018-1-10)。

我在auth_user表中有一行,date_joined

2018-01-11 00:56:39.735756+05:30

但是当我将From和To日期作为2018-01-11时,它什么都不返回。

寻找答案。提前致谢。

2 个答案:

答案 0 :(得分:1)

That happens because the time part of the datetime. You can use the __date helper in filters. Use it like this:

fm.filter(user__date_joined__date__gte=filters['from_date'])

And only the Date part of a DateTime will be used.

答案 1 :(得分:0)

这是因为如果您没有指定时间并且您与datetime字段进行比较,则数据库后端会将00:00作为比较时间添加。因此,如果您将两个日期都设置为2018-01-11,那么它会在2018-01-11 00:00和2018-01-11 00:00之间获取值。尝试使用2018-01-12作为To日期。