SQLAlchemy:過濾日期欄位
在 SQLAlchemy 中,依照日期欄位進行過濾需要仔細考慮。讓我們探索如何在兩個日期之間正確過濾以提取指定年齡範圍內的資料。
建模日期欄位
假設您有一個帶有生日欄位的User 模型定義為日期資料類型,它在資料庫中表示為格式為「YYYY- MM-DD”的字串,例如, '1987-01-17'.
按年齡範圍過濾
要選擇特定年齡範圍內的所有用戶,比如說 18 到 30歲,我們需要將他們的生日與代表該生日開始和結束的相應日期進行比較
不正確的方法
您的初始查詢雖然在概念上是正確的,但包含顛倒不等號的拼字錯誤:
query = DBSession.query(User).filter( and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17') )
此查詢排除所有記錄,因為它檢查生日大於或等於「1988-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中文網其他相關文章!