Ecco il modello:SQLAlchemy: come filtrare il campo della data?
class User(Base):
...
birthday = Column(Date, index=True) #in database it's like '1987-01-17'
...
voglio filtrare tra due date, per esempio di scegliere tutti gli utenti di intervallo 18-30 anni.
Come implementarlo con SQLAlchemy?
penso:
query = DBSession.query(User).filter(
and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17')
)
# means age >= 24 and age <= 27
So che questo non è corretto, ma come fare corretta?
Grazie in anticipo!
Btw, invece di ''1985-01-17'', puoi anche usare' datetime.date (1985, 1, 17) '- potrebbe essere più facile da ottenere o lavorare in alcuni ambienti. – rippleslash
@rippleslash: hai ragione, e idealmente si dovrebbe usare il tipo di dati corretto per i parametri. Tuttavia tutti i database comprendono anche il formato ISO 8601 per le date, che è anche l'ordine lessicografico. Per questo motivo, per semplici esempi, utilizzo generalmente date con formattazione ISO, più facili da leggere. – van
Ragazzi, ricordate anche una cosa. NON mettere la data tra virgolette come 'User.birthday <=" 1988-01-17 "' non funzionerà. 'Errore:" L'ora deve essere compresa tra 0 e 23 "' Usa invece il segno di punteggiatura come @van ha detto 'User.birthday <= '1988-01-17'' – pawpaw