2013-05-02 3 views
1

정수형 (날짜로 사용)의 final_date 열이있는 sqlite 테이블이 있습니다. 이 칼럼에서 지금까지 일수를 계산하고 싶습니다. sqlite에서, 나는 다음과 같이 함수 (julianday)의 도움으로 SQL을 실행할 수있다.SQLAlchemy에서 sqlite 날짜 델타를 얻을 수있는 방법

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 - 오늘 )

내가 효과적인 방법으로이 있는지 궁금 SQLAlchemy 코드에 julianday 함수를 적용하거나 SQLAlchemy에 대체 네이티브 방식이 있는지 확인하십시오.

+0

조금 더 자세한 정보를 제공해주십시오. INTEGER로 저장된 두 개의 샘플 날짜를 제공해주십시오. 그러면 날짜가 INTEGER로 정확히 저장되는 방법을 이해하는 데 도움이됩니까? 그것은 시대 이후 몇 초입니까? 아니면 YYYYMMDD입니까? 또는 다른 것? – vvladymyrov

답변

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

관련 문제