django使用orm方式查询mogodb的某段时间的值

在使用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

转载于:https://www.cnblogs.com/chongyou/p/9602658.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值