我使用默认auth_user
表格,其字段为date_joined
,类型为timestamp with time zone
。
我只想检查lte
和gte
的比较,只考虑其日期而不是时间和区域。
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
时,它什么都不返回。
寻找答案。提前致谢。
答案 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
日期。