我怎样才能在SQLAlchemy中获得sqlite日期增量

时间:2013-05-02 15:05:38

标签: sqlite sqlalchemy

我有一个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中是否有替代的本机方法来实现此目的。

1 个答案:

答案 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特定功能,不能与其他数据库系统一起使用。