[PYTHON] SQLAlchemy : 날짜 필드를 필터링하는 방법?
PYTHONSQLAlchemy : 날짜 필드를 필터링하는 방법?
다음은 모델입니다.
class User(Base):
...
birthday = Column(Date, index=True) #in database it's like '1987-01-17'
...
예를 들어, 18-30 년 간격으로 모든 사용자를 선택하는 것과 같이 두 날짜 사이를 필터링하고 싶습니다.
SQLAlchemy로 구현하는 방법은 무엇입니까?
내 생각 엔:
query = DBSession.query(User).filter(
and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
# means age >= 24 and age <= 27
나는 이것이 정확하지 않다는 것을 알고 있지만, 올바른 방법은 무엇입니까?
미리 감사드립니다!
해결법
-
==============================
1.실제로 필터는 오타를 제외하고 모든 레코드를 제외합니다. <= for> = 및 그 반대로 변경해야합니다.
실제로 필터는 오타를 제외하고 모든 레코드를 제외합니다. <= for> = 및 그 반대로 변경해야합니다.
qry = DBSession.query(User).filter( and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17')) # or same: qry = DBSession.query(User).filter(User.birthday <= '1988-01-17').\ filter(User.birthday >= '1985-01-17')
또한 사이에 사용할 수 있습니다 :
qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
-
==============================
2.
from app import SQLAlchemyDB as db Chance.query.filter(Chance.repo_id==repo_id, Chance.status=="1", db.func.date(Chance.apply_time)<=end, db.func.date(Chance.apply_time)>=start).count()
그것은 다음과 같습니다.
select count(id) from Chance where repo_id=:repo_id and status='1' and date(apple_time) <= end and date(apple_time) >= start
소원이 당신을 도울 수 있습니다.
from https://stackoverflow.com/questions/8895208/sqlalchemy-how-to-filter-date-field by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 범위가 너무 큽니다. Python (0) | 2018.11.07 |
---|---|
[PYTHON] python에서 sympy를 사용하여 표현식을 계산하는 방법 (0) | 2018.11.07 |
[PYTHON] 숫자에 합쳐지는 모든 숫자 얻기 (0) | 2018.11.07 |
[PYTHON] 결말이없는 파이프에서 어떻게 파이썬으로 stdin을 읽는가? (0) | 2018.11.07 |
[PYTHON] 정렬없이 numpy 고유 [중복] (0) | 2018.11.07 |