小さなフラスコのアプリケーションでsqlliteデータベースに接続するsqlalchemyがあります。フラスコの日付クエリ - sqlalchemy ge、leが等しい場合、空でない場合は空
私が行う場合:
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)です。私はそれを文字列に切り替えようとしましたが、うまくいきませんでした。
実際には、上記の文字列を使用すると機能します。
これはうんざりな質問ですが、申し訳ありませんが、私は驚くべきことに誰もが助けることができます。
私が行う場合 check = MyTable.query.filter(MyTable.run_dt> = '2017-12-14'、MyTable.run_dt <= '2017-12-15')。すべて() 14日。私はこの仕事をすることができると思うが、それはかなりばかげているようだ。なぜ、仕事は等しくないのですか? – SuperClueless
run_dtをdb.Column(db.String)型に変更した後、 '2017-12-14 00:00:00'でフィルタリングすると動作します。私はこの解決法を愛していません。 run_dtをDateとして定義すると、正しく使用していないことが示唆されます。 – SuperClueless
人が答えられるようにするには、モデルとサンプルデータをこのような質問に含めます(「なぜ私のデータが得られないのですか」)。つまり、[mcve]です。 –