SQLAlchemy: 日付フィールドのフィルタリング
SQLAlchemy では、日付フィールドに基づくフィルタリングには慎重な考慮が必要です。 2 つの日付の間で正しくフィルタリングして、指定した年齢範囲内のデータを抽出する方法を見てみましょう。
日付フィールドのモデル化
誕生日フィールドを持つ User モデルがあると仮定します。 Date データ型として定義されている場合、データベースでは「YYYY-MM-DD」形式の文字列として表されます。例: '1987-01-17'.
年齢範囲によるフィルタリング
特定の年齢範囲 (たとえば 18 ~ 30 歳) 内のすべてのユーザーを選択するには、以下を行う必要があります。自分の誕生日を、その始まりと終わりを表す対応する日付と比較します。 range.
間違ったアプローチ
最初のクエリは、概念的には正しいものの、不等号記号を逆にするタイプミスが含まれています。
query = DBSession.query(User).filter( and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17') )
このクエリ誕生日が以下のユーザーをチェックするため、すべてのレコードが除外されます。 '1988-01-17' かつ '1985-01-17' 以下は不可能です。
正しいアプローチ
正しくフィルターするには、次のようにします。不等号を反転します:
qry = DBSession.query(User).filter( and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17') )
または、組み込みのbetween() メソッド:
qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
どちらのアプローチでも、誕生日が指定された日付範囲内にあり、目的の年齢間隔を表すユーザーが返されます。
以上が年齢範囲クエリの SQLAlchemy 日付フィールドを正しくフィルターするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。