2017-12-18 12 views
0

작은 플라스크 응용 프로그램에서 sqllite 데이터베이스에 연결하는 sqlalchemy가 있습니다.flask-sqlalchemy의 날짜 쿼리가 비어있을 때 공백 일 때 비움

내가 할 경우

check = MyTable.query.filter(MyTable.run_dt >= datetime.date(2017,12,14)).all() 

은 그 때 나는보다 크거나 2017년 12월 14일 동일 run_dt 모든 행의 목록이 포함 된 SQLAlchemy의 객체를받을 수 있습니다. 날짜가 '2017-12-14'인 행이 여러 개 있습니다. 이것은 내가 기대하는 것입니다.

내가 할 경우

check = MyTable.query.filter(MyTable.run_dt == datetime.date(2017,12,14)).all() 

나는 빈 세트를 가져옵니다. 나는 이유를 알 수 없다.

run_dt는 모델 개체의 db.Column (db.Date)입니다. 내가 문자열로 전환 시도하고 그것을 작동하지 않았다.

실제로 위의 문자열 작업을 수행하면됩니다.

이런 질문이 유감 스럽지만 유감스럽게 생각합니다.하지만 누군가가 줄 수있는 도움을 주셔서 감사합니다.

+0

내가 체크를 할 경우 = MyTable.query.filter은 (MyTable.run_dt> = '2017년 12월 14일', MyTable.run_dt을 <= '2017년 12월 15일를'). 모두() 난 단지 얻을 14 일. 나는이 일을 할 수 있다고 생각하지만 꽤 바보 같다. 왜 일과 동등하지 않습니까? – SuperClueless

+0

run_dt를 db.Column (db.String) 유형으로 변경 한 다음 '2017-12-14 00:00:00'에 필터하면 작동합니다. 나는이 솔루션을 좋아하지 않는다. 그것은 run_dt를 Date로 정의 할 때 올바르게 사용하지 않을 것이라고 제안합니다. – SuperClueless

+0

사람들이 답할 수 있도록하려면 모델과 샘플 데이터를 다음과 같은 질문에 포함 시키십시오 ("왜 데이터를 가져 오지 못합니다"). 다른 말로하면 [mcve]. –

답변

0

그래서 한 가지 해결책은 날짜를 '% Y- % m- % d % H : % M : % S'형식으로 strftime하는 것입니다. 이렇게하면 문제가 해결됩니다.

그러나 나는 왜 이것이 작동하고 datetime.datetime (20171214000)이 작동하지 않는지 이해하지 못합니다.