这是我的"请求"类/表:
class Request(BaseModel):
TIME_STAMP = DateTimeField(default=datetime.datetime.now)
MESSAGE_ID = IntegerField()
对于peewee,我想从表格中选择所有"请求"在过去10分钟内发生的事情。像这样:
rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now<(10 minutes))
但是,我并不完全确定如何在几分钟内获得TIME_STAMP和当前时间之间的差异。
编辑: 我已经尝试过Gerrat的建议,但Peewee似乎在哭:
/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '2014-07-19 15:51:24'
cursor.execute(sql, params or ())
/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '0 0:10:0'
cursor.execute(sql, params or ())
答案 0 :(得分:4)
我从未使用过peewee,但如果您只是减去两个时间戳,那么您将获得一个datetime.timedelta对象。您应该能够将它与另一个timedelta对象进行比较。类似的东西:
rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now()
<(datetime.timedelta(seconds=10*60)))
修改强> ......仔细观察一下peewee,上面可能行不通。如果没有,那么应该如下:
ten_min_ago = datetime.datetime.now() - datetime.timedelta(seconds=10 * 60)
rs = Request.select().where(Request.TIME_STAMP > ten_min_ago)
您的数据库中的时间戳将大于当前时间(您选择的假设)似乎有些奇怪......所以您可能希望添加时间增量并相反地减去值(例如,如果您想要在最后10分钟内选择记录。)