> 데이터 베이스 > MySQL 튜토리얼 > 연령대 쿼리에 대해 SQLAlchemy 날짜 필드를 올바르게 필터링하는 방법은 무엇입니까?

연령대 쿼리에 대해 SQLAlchemy 날짜 필드를 올바르게 필터링하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-21 04:09:10
원래의
815명이 탐색했습니다.

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿