SQLAlchemy: Menapis Medan Tarikh
Dalam SQLAlchemy, penapisan berdasarkan medan tarikh memerlukan pertimbangan yang teliti. Mari kita terokai cara menapis dengan betul antara dua tarikh untuk mengekstrak data dalam lingkungan umur yang ditentukan.
Memodelkan Medan Tarikh
Andaikan anda mempunyai model Pengguna dengan medan hari lahir ditakrifkan sebagai jenis data Tarikh, ia diwakili dalam pangkalan data sebagai rentetan dalam format 'YYYY-MM-DD', mis., '1987-01-17'.
Menapis mengikut Julat Umur
Untuk memilih semua pengguna dalam lingkungan umur tertentu, katakan 18 hingga 30 tahun, kita perlu bandingkan hari lahir mereka dengan tarikh sepadan yang mewakili permulaan dan akhir julat itu.
Salah Pendekatan
Pertanyaan awal anda, walaupun dari segi konsep betul, mengandungi kesilapan menaip yang membalikkan simbol ketaksamaan:
query = DBSession.query(User).filter( and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17') )
Pertanyaan ini mengecualikan semua rekod kerana ia menyemak pengguna yang kedua-duanya mempunyai tarikh lahir lebih besar daripada atau sama dengan '1988-01-17' dan kurang daripada atau sama dengan '1985-01-17', yang mustahil.
Pendekatan Betul
Untuk menapis dengan betul, hanya terbalikkan simbol ketaksamaan:
qry = DBSession.query(User).filter( and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17') )
Sebagai alternatif, anda boleh menggunakan terbina dalam antara() kaedah:
qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
Kedua-dua pendekatan akan mengembalikan pengguna yang tarikh lahirnya berada dalam julat tarikh yang ditentukan, mewakili selang umur yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Medan Tarikh SQLAlchemy dengan Betul untuk Pertanyaan Julat Umur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!