Đây là mô hình:SQLAlchemy: cách lọc trường ngày?
class User(Base):
...
birthday = Column(Date, index=True) #in database it's like '1987-01-17'
...
Tôi muốn lọc giữa hai ngày, ví dụ để chọn tất cả người dùng trong khoảng thời gian 18-30 năm.
Làm cách nào để triển khai nó với SQLAlchemy?
tôi nghĩ về:
query = DBSession.query(User).filter(
and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
# means age >= 24 and age <= 27
Tôi biết điều này là không đúng, nhưng làm thế nào để làm có đúng không?
Cảm ơn trước!
Btw, thay vì '' 1985-01-17'', bạn cũng có thể sử dụng 'datetime.date (1985, 1, 17)' - có thể dễ dàng hơn trong việc làm việc hoặc làm việc trong một số môi trường. – rippleslash
@rippleslash: bạn đúng, và lý tưởng nhất là sử dụng loại dữ liệu thích hợp cho các tham số. Tuy nhiên, tất cả các cơ sở dữ liệu đều hiểu định dạng ISO 8601 cho các ngày, cũng xảy ra theo thứ tự từ điển. Vì lý do này cho các ví dụ đơn giản, tôi thường sử dụng ngày định dạng ISO - dễ đọc hơn. – van
Các bạn, bạn cũng nên nhớ một điều. KHÔNG đặt ngày vào các dấu ngoặc kép như 'User.birthday <=" 1988-01-17 "' nó sẽ không hoạt động. 'Lỗi:" Giờ cần phải từ 0 đến 23 "' Thay vào đó sử dụng dấu chấm câu như @van nói 'User.birthday <= '1988-01-17'' – pawpaw