2013-05-02 67 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