J'ai un modèle avec des colonnes:
from: { type: Sequelize.DATE }
to: { type: Sequelize.DATE }
et voulez interroger tous les enregistrements dont from
OR to
se trouve entre les plages de dates: [startDate, endDate]
J'ai essayé quelque chose comme:
const where = {
$or: [{
from: {
$lte: startDate,
$gte: endDate,
},
to: {
$lte: startDate,
$gte: endDate,
},
}],
};
Quelque chose comme: SELECT * from MyTable WHERE (startDate <= from <= endDate) OR (startDate <= to <= endDate
La solution qui fonctionne pour moi est la suivante: -
# here startDate and endDate are Javascript Date object
const where = {
from: {
$between: [startDate, endDate]
}
};
Pour en savoir plus sur les opérateurs: - http://docs.sequelizejs.com/en/latest/docs/querying/#operators
Remarque: Dans [~ # ~] mysql [~ # ~] between
l'opérateur de comparaison est inclus , ce qui signifie qu'il est équivalent à l'expression (startDate <= from AND from <= endDate)
.