如何从python中的给定日期减去n天

时间:2012-01-09 13:15:02

标签: python google-app-engine

我已按如下方式实施数据库

from google.appengine.ext import db
from google.appengine.ext import blobstore

class Medicine:
 id =  db.IntegerProperty(required=True)
 exp_date = db.DateProperty()

并且在实体经理中我希望得到所有药物到期日 - 20

MedicineEntity:
 def get_medicines(self):
 query = db.GqlQuery("SELECT * FROM Medicine WHERE exp_date=:1", exp_date -20 )

我知道我的查询错了。有没有办法像Gql中的sql一样获得差异。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

在python中执行此操作的标准方法是使用timedelta。

例如:

from datetime import datetime, timedelta
now = datetime.now()
delta = timedelta(days=20)

then = now - delta

所以1选项是将exp_date转换为日期时间,减去timedelta然后将其转换回dateproperty。

我没有使用过appengine所以我不知道究竟有多难。

编辑:有些搜索显示DateProperty实际上将该值存储为日期时间对象,因此它应该像

一样简单
query = db.GqlQuery("SELECT * FROM Medicine WHERE exp_date=:1", exp_date - timedelta(days=20) )