Séqueliser la requête pour trouver tous les enregistrements qui tombe entre la gamme de date

j'ai un modèle avec des colonnes :

from: { type: Sequelize.DATE }
to: { type: Sequelize.DATE }

et à interroger tous les enregistrements dont le from OU to se situe 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 : Sélectionnez * dans MyTable WHERE (startDate <= from <= endDate) OR (startDate <= to <= endDate

17
demandé sur Akshay Pratap Singh 2017-03-30 13:26:48

1 réponses

La solution qui fonctionne pour moi, c'est ceci:-

# here startDate and endDate are Javascript Date object
const where = {
    from: {
        $between: [startDate, endDate]
    }
};

De référence pour en savoir plus sur les opérateurs:- http://docs.sequelizejs.com/en/latest/docs/querying/#operators

Remarque: MYSQLbetween opérateur de comparaison inclusive, ce qui signifie qu'il est équivalente à l'expression (startDate <= from AND from <= endDate).

24
répondu Akshay Pratap Singh 2017-03-31 08:58:07