ホームページ > データベース > mysql チュートリアル > 年齢範囲クエリの SQLAlchemy 日付フィールドを正しくフィルターするにはどうすればよいですか?

年齢範囲クエリの SQLAlchemy 日付フィールドを正しくフィルターするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-21 04:09:10
オリジナル
816 人が閲覧しました

How to Correctly Filter SQLAlchemy Date Fields for Age Range Queries?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート