Вот модель:SQLAlchemy: как фильтровать поле даты?
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
Я знаю, что это не правильно, но как это сделать правильно?
Заранее благодарен!
Btw вместо ''1985-01-17'' вы также можете использовать' datetime.date (1985, 1, 17) '- в некоторых средах может быть проще работать или работать. – rippleslash
@rippleslash: вы правы, и в идеале следует использовать правильный тип данных для параметров. Однако все базы данных понимают также формат ISO 8601 для дат, что также является лексикографическим порядком. По этой причине для простых примеров я обычно использую даты в формате ISO - легче читать. – van
Ребята, вы также должны помнить одно. НЕ помещайте дату в кавычки, как 'User.birthday <=" 1988-01-17 "' это не сработает. 'Ошибка:« Час должен быть от 0 до 23 ». Вместо этого используйте знак препинания, как @van сказал' User.birthday <= '1988-01-17'' – pawpaw