Loading “many” related models eagerly with a “between” predicate

I have a model with “termStart” and “termEnd” dates. The rows in the table will have disjoint time ranges; that is, there won’t be overlaps. I’ve established a many-to-one relationship successfully, and now I want to do an eager load (a join) to the “many” table with a predicate that picks the row whose start-end range includes the current date. I think I need to do that with something like:

const model1s = parent.getModel1s({
    include: "model2",
    where: // something
});

I know that there’s a between operator, but I cannot find any information on exactly how it works, or how it works when I am checking two dates in the table with a single date in the query (as opposed to checking a single date in the table with a range in the query).

I’m only a few days into using Sequelize so this may be obvious. I’ve been going in circles through the documentation and I can’t find anything. If there’s a way of even supplying a raw SQL predicate fragment, that’d be fine by me; I know how to do it in SQL of course.

A related question is this: is there a way to go through the .getSomethings() method that establishing a many-to-one relationship creates, but do so such that Sequelize knows that the join will involve a single row? In other words, because my date ranges do not overlap, the “between” comparison (however it ends up working) is guaranteed to find either zero or one “model2” rows.

I know I could do this with a separate .findOne() call, but of course I’d prefer to do a single query to get all the model1 instances without having to do separate queries for each one of those.