web-dev-qa-db-ja.com

クエリをシークライズして、日付範囲の間にあるすべてのレコードを検索します

私は列を持つモデルを持っています:

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

from OR toが日付範囲の間にあるすべてのレコードを照会したい場合:[startDate, endDate]

私は次のようなものを試しました:

const where = {
      $or: [{
        from: {
          $lte: startDate,
          $gte: endDate,
        },
        to: {
          $lte: startDate,
          $gte: endDate,
        },
      }],
    };

SELECT * from MyTable WHERE(startDate <= from <= endDate)OR(startDate <= to <= endDate

26

私のために働く解決策はこれです:-

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

演算子の詳細を知るためのリファレンス:- http://docs.sequelizejs.com/en/latest/docs/querying/#operators

注:In[〜#〜] mysql [〜#〜]between比較演算子はinclusiveです。つまり、式(startDate <= from AND from <= endDate)と同等です。

38