在 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
))
我正在尝试从 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
))