How to use DateTimeRange Field with Wtforms‐alchemy and sqlalchemy - MUMT-IT/mis2018 GitHub Wiki
Model
For the model, use DateTimeRangeType from sqlalchemy_utils package for a column. To enter data to the field, use DateTimeRange from psycopg2.extras package.
from sqlalchemy_utils import DateTimeRangeType
class Event(db.Model):
datetime = db.Column(DateTimeRangeType)
from psycopg2.extras import DateTimeRange
start = arrow.get(form.start.data).datetime
end = arrow.get(form.end.data).datetime
event.datetime = DateTimeRange(lower=start, upper=end, bounds='[]')
Note that it is unsure whether timezone needs to be specified in arrow function.
To find overlapping events, use this:
overlaps = query.filter(RoomEvent.datetime.op('&&')(DateTimeRange(lower=start, upper=end, bounds='[]'))).all()