1

我有一个带有 INTEGER 类型的列 final_date 的 sqlite 表(用作日期)。我想计算从该列到现在的天数。在 sqlite 中,我可以在函数 (julianday) 的帮助下运行 SQL,如下所示。

select (julianday(final_date) - julianday('now')) AS days from bond where days > 0
109.407374872826
482.407374872826
488.407374872826
....

但是,在 SQLAlchemy 中,以下代码无法获得准确的天数。

今天 = datetime.today().date()

查询 = session.query(Bond.final_date - 今天)

我想知道是否有一种有效的方法可以将函数 julianday 应用于 SQLAlchemy 代码,或者 SQLAlchemy 中是否有另一种本机方法来实现这一点。

4

1 回答 1

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 特定功能,不适用于其他数据库系统。

于 2013-05-02T17:48:28.573 回答