我正在尝试在特定日期从表中获取所有记录。
我的url.py代码是:
url(r'^jobs/date/?P<date>.*',RunningJobsListApiView.as_view()),
这是我视图中从表中获取所有记录的代码。
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时间戳格式进行比较?
答案 0 :(得分:2)
要从字符串日期表示中获取UNIX时间戳,您首先需要将字符串转换为带有strptime()
的Python datetime
,然后在其上调用timestamp()
方法。但是,由于一天包含一系列时间戳,因此您需要在目标日期的开始和第二天的开始之间进行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
))