我有一个sqlite表,其中包含一个INTEGER类型的final_date列(用作日期)。我想计算从这一列到现在的天数。在sqlite中,我可以在函数(julianday)的帮助下运行SQL,如下所示。
select (julianday(final_date) - julianday('now')) AS days from bond where days > 0
109.407374872826
482.407374872826
488.407374872826
....
但是,在SQLAlchemy中,以下代码无法获得准确的天数。
today = datetime.today()。date()
query = session.query( Bond.final_date - 今天 )
我想知道是否有一种有效的方法将函数julianday应用于SQLAlchemy代码,或者SQLAlchemy中是否有替代的本机方法来实现此目的。
答案 0 :(得分:0)
如果您可以控制数据库和数据,则可能需要更新架构以将列定义为sqlalchemy.types.DateTime
。使用datetime
模块进行日期计算。
或者您可以使用sqlalchemy.sql.func
访问julianday()sqlite函数。
from sqlalchemy.sql import func
q = session.query( func.julianday( Bond.final_date) - func.julianday("now"))
for row in q.all():
print row[0]
请注意,第二种方法使用sqlite特定功能,不能与其他数据库系统一起使用。