在Query中按时间戳过滤

时间:2011-02-07 16:20:09

标签: django

我有一份工作清单。它们按job_type过滤,完成= False / True。 例如:Job.objects.filter(job_type=1, complete=False)

我如何通过Job的时间戳过滤这些: job.timestamp.strftime(date_filter) == job.today().strftime(date_filter)

所以我想最后返回一个这样的列表:

Job.objects.filter(
   job_type=1,
   complete=False, 
   timestamp.strftime(date_filter)=datetime.today().strftime(date_filter)
).distinct()

1 个答案:

答案 0 :(得分:10)

如果我理解你的问题是正确的,那么你是否试图过滤某一天发生的所有工作?因此,计算一个日期范围,然后在过滤器中使用它:

from datetime import datetime, timedelta
today = datetime.now().date()

if date_filter == "day":
    timestamp_from = datetime.now().date()
    timestamp_to = datetime.now().date() + timedelta(days=1)
elif date_filter == "month":
    # Etc...
elif date_filter == "year":
    # Etc...

Job.objects.filter(
    job_type = 1,
    complete = False, 
    timestamp__gte = timestamp_from,
    timestamp__lt = timestamp_to,
).distinct()

否则,您可以使用extra SQL WHERE clause

做一些时髦的事情