在 Django ORM 中比较 unix 时间戳和日期

Comparing unix timestamp with date in Django ORM

我正在尝试从 table 中获取特定日期的所有记录。

我的 url.py 代码是:

 url(r'^jobs/date/?P<date>.*',RunningJobsListApiView.as_view()),

这是我的视图代码,用于从 table.

中获取所有记录
class RunningJobsListApiView(generics.ListAPIView):
        queryset = LinuxJobTable.objects.annotate(status=Case(When(state=3, then=Value('Completed')),When(state=5, then=Value('Failed')),When(state=1, then=Value('Running')),default=Value('Unknown'),output_field=CharField(),),)
        serializer_class = JobInfoSerializer

现在,我想过滤 url 中特定日期的工作。但在我的数据库中,日期是 UNIX 时间戳格式(即 1530773247)。

如何比较 DateFormat(mm-dd-yyyy) 与保存在数据库中的 UNIX 时间戳格式?

要从字符串日期表示中获取 UNIX 时间戳,您首先需要将字符串转换为 Python datetime 并在目标日期的开始和之间使用 strptime(), and then call the timestamp() method on it. But since a single day comprises a range of timestamps, you need to do a range 查询第二天的开始。

类似于:

from datetime import datetime, timedelta

target_day = datetime.strptime(date, "%m-%d-%Y")
next_day = target_day + timedelta(days=1)
queryset = LinuxJobTable.objects.filter(timestamp__range=(
    int(target_day.timestamp()), 
    int(next_day.timestamp()) - 1  # since range is inclusive
))