如何在Python中从给定日期减去n天

0 投票
1 回答
650 浏览
提问于 2025-04-17 09:51

我实现了一个数据库,具体代码如下:

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 )

我知道我的查询写错了。有没有办法像在SQL中那样在Gql中获取差值?谁能帮帮我?

1 个回答

6

在Python中,处理这个问题的标准方法是使用timedelta。

比如:

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

then = now - delta

所以一个选择是把exp_date转换成一个日期时间对象,减去timedelta,然后再把它转换回日期属性。

我没有使用过appengine,所以不太清楚具体会有多难。

补充说明:经过一些搜索发现,DateProperty实际上是把值存储为日期时间对象,所以这应该很简单:

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

撰写回答