web-dev-qa-db-fra.com

Sequelize Query pour rechercher tous les enregistrements compris entre les dates

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

26
Anonymous Zombie

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).

38