2013-05-02 41 views
1

我有一个sqlite表中列INTEGER类型(用作日期)final_date列。我想计算从本专栏到现在的天数。在sqlite中,我可以使用函数(julianday)的帮助来运行SQL,如下所示。我怎样才能得到SQLite日期增量在SQLAlchemy

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

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

= datetime.today()日期()

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

我不知道是否有一个有效的方法将函数julianday应用于SQLAlchemy代码,或者SQLAlchemy中是否有其他本地方法来实现此目的。

+0

请提供一点信息 - 请提供两个以INTEGER形式存储的样本日期。这将有助于了解如何确切地将日期存储为INTEGER?是否在时代之后几秒?还是YYYYMMDD?或者是其他东西? – vvladymyrov 2013-05-02 17:30:38

回答

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

+0

谢谢。这真的有帮助,并回答了我的问题。 – godsarmy 2013-05-03 14:41:09