SQL 화학: 날짜 필드를 필터링하는 방법은 무엇입니까?
모델은 다음과 같습니다.
class User(Base):
...
birthday = Column(Date, index=True) #in database it's like '1987-01-17'
...
예를 들어 18-30년 간격으로 모든 사용자를 선택하는 등 두 날짜 사이를 필터링하려고 합니다.
SQL 화학으로 구현하는 방법은 무엇입니까?
생각나는 것은:
query = DBSession.query(User).filter(
and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
# means age >= 24 and age <= 27
이것이 정확하지 않다는 것을 알지만, 어떻게 정확하게 해야 합니까?
사실, 오타를 제외하고 당신의 쿼리는 맞습니다: 당신의 필터는 모든 레코드를 제외하고 있습니다: 당신은 변경해야 합니다.<=
위해서>=
또는 그 반대의 경우:
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')
또한 사용할 수 있습니다.between
:
qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
전체 기간을 얻고자 하는 경우:
from sqlalchemy import and_, func
query = DBSession.query(User).filter(and_(func.date(User.birthday) >= '1985-01-17'),\
func.date(User.birthday) <= '1988-01-17'))
즉, 범위: 1985-01-17 00:00 - 1988-01-17 23:59
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
소원이 당신을 도울 수 있습니다.
여기 최신 버전이 있습니다.Flask
버전 및 용도.
from datetime import date, timedelta
from flask import jsonify
from app import db, ma
from app.models import User
from . import main
class UserSchema(ma.Schema):
class Meta:
fields = ('forename', 'surname', 'birthday', ...)
@main.route('/', methods=('GET',))
def get_users():
start_range = date.today() + timedelta(years=-30)
end_range = date.today() + timedelta(years=-18)
users = db.session.query(User).filter(User.birthday.between(start_range, end_range)).all()
users_schema = UserSchema(many=True)
return jsonify(users_schema.dump(users))
언급URL : https://stackoverflow.com/questions/8895208/sqlalchemy-how-to-filter-date-field
'programing' 카테고리의 다른 글
libarclite_iphoneos.a 파일 누락(Xcode 14.3) (0) | 2023.07.24 |
---|---|
mariadb의 JSON_SET에 있는 와일드카드 대안 (0) | 2023.07.24 |
일 년 중 어느 분기에 날짜가 있는지 확인하는 기능이 있습니까? (0) | 2023.07.19 |
Oracle에서 행의 sha1-hash (0) | 2023.07.19 |
Grails3 파일 업로드 maxFileSize 제한 (0) | 2023.07.19 |