SQLAlchemy: 날짜 필드 필터링
SQLAlchemy에서 날짜 필드를 기준으로 필터링하려면 신중한 고려가 필요합니다. 두 날짜 사이를 올바르게 필터링하여 지정된 연령 범위 내의 데이터를 추출하는 방법을 살펴보겠습니다.
날짜 필드 모델링
생년월일 필드가 있는 사용자 모델이 있다고 가정합니다. 날짜 데이터 유형으로 정의되면 데이터베이스에서 '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' 이상인 사용자를 확인하기 때문에 모든 레코드를 제외합니다. '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!