在使用djgango時,需要在數據表中過濾出在某段時間的內容,網上很多或者說Django的orm是針對mysql,且字段類型是datetime或者其他時間類型,使用__rang這個函數就可以查詢某個時間段的值,
具體可以參考:https://www.cnblogs.com/linjiqin/p/3821914.html
pub_date:是字段,__range:就是使用的API,
但是如果你是使用的mogodb,且數據類型是字符串的,如下圖這種字段
存儲的數據格式為:
你使用rang就不行,mogodb就需要這樣操作
需要去掉時分秒,保留日期,轉成日期格式,使用下面的gte和ite的API來進行查詢
具體代碼如下:
end_date = datetime.datetime.strptime(data_time,'%Y-%m-%d')+datetime.timedelta(days=1) start_date = end_date-datetime.timedelta(hours=168) #24*8=192 logger.info("查詢起始時間為: %s 結束時間為:%s" % (start_date, end_date)) task_log = TaskLogInfo.objects.filter(task=tasks['id'], start_time__lte=str(end_date)[:10],start_time__gte=str(start_date)[:10])
我查詢的時間是2018-9-6號,查詢7天的數據,因為當天時間需要多加一天,所以查詢日期起:2018-8-31,結束時間為:2018-8-7,這樣就可以查詢出數據是否在某段時間內了 ,且一定是日期不能攜帶時,我猜想可能是把他當作字符串來操作
以下博客中有寫到一些過濾條件的API,可參考
https://www.cnblogs.com/yifugui/p/8075306.html