Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sequelize.js Sequelize查询-比较两列中的日期_Sequelize.js - Fatal编程技术网

Sequelize.js Sequelize查询-比较两列中的日期

Sequelize.js Sequelize查询-比较两列中的日期,sequelize.js,Sequelize.js,我在Sequelize中有一个表,其中包含两个日期列,即: var Visit = sequelize.define("Visit", { /*...*/ scheduleEndDate: { type: DataTypes.DATE } actualEndDate: { type: DataTypes.DATE } /*...*/ }); 我想做一个查询,返回actualEndDate在scheduleEndDate之前的行,但无法获得正确的格式。我为

我在Sequelize中有一个表,其中包含两个日期列,即:

var Visit = sequelize.define("Visit", {
  /*...*/
  scheduleEndDate: {
    type: DataTypes.DATE
  }
  actualEndDate: {
    type: DataTypes.DATE
  }
  /*...*/
});
我想做一个查询,返回actualEndDate在scheduleEndDate之前的行,但无法获得正确的格式。我为
where
部分的
findAll
查询所做的尝试是:

where: { actualEndDate: { lt: Visit.scheduleEndDate } }
-由于未定义访问而引发错误(也尝试过使用this.scheduleEndDate-也引发错误)

其中:{actualEndDate:'
-将actualEndDate与字符串“
我是否需要定义一个实例方法来进行日期比较/如何最好地解决问题?

这应该可以通过

where: { actualEndDate: { $lt: sequelize.col('scheduleEndDate') } }
在最新版本(v5)中,您需要使用
Sequelize.Op

所有操作:

Project.findAll({
  where: {
    id: {
      [Op.and]: {a: 5},           // AND (a = 5)
      [Op.or]: [{a: 5}, {a: 6}],  // (a = 5 OR a = 6)
      [Op.gt]: 6,                // id > 6
      [Op.gte]: 6,               // id >= 6
      [Op.lt]: 10,               // id < 10
      [Op.lte]: 10,              // id <= 10
      [Op.ne]: 20,               // id != 20
      [Op.between]: [6, 10],     // BETWEEN 6 AND 10
      [Op.notBetween]: [11, 15], // NOT BETWEEN 11 AND 15
      [Op.in]: [1, 2],           // IN [1, 2]
      [Op.notIn]: [1, 2],        // NOT IN [1, 2]
      [Op.like]: '%hat',         // LIKE '%hat'
      [Op.notLike]: '%hat',       // NOT LIKE '%hat'
      [Op.iLike]: '%hat',         // ILIKE '%hat' (case insensitive)  (PG only)
      [Op.notILike]: '%hat',      // NOT ILIKE '%hat'  (PG only)
      [Op.overlap]: [1, 2],       // && [1, 2] (PG array overlap operator)
      [Op.contains]: [1, 2],      // @> [1, 2] (PG array contains operator)
      [Op.contained]: [1, 2],     // <@ [1, 2] (PG array contained by operator)
      [Op.any]: [2,3]            // ANY ARRAY[2, 3]::INTEGER (PG only)
    },
    status: {
      [Op.not]: false           // status NOT FALSE
    }
  }
})
Project.findAll({
其中:{
身份证:{
[Op.and]:{a:5}、//和(a=5)
[Op.or]:[{a:5},{a:6}],//(a=5或a=6)
[Op.gt]:6,//id>6
[Op.gte]:6,//id>=6
[Op.lt]:10,//id<10
[Op.lte]:10,//id[1,2](PG阵列包含运营商)

[Op.contained]:[1,2],//是的-这很有效。删除了我不正确的响应。谢谢。请您解释一下为什么这样做?我很难理解创建列对象如何帮助比较日期。谢谢!
$lt
转换为运算符(
Aah,这完全有道理。感谢您的洞察力!
const Op = Sequelize.Op;
...
where: {
    actualEndDate: {
        [Op.lt]: sequelize.col('scheduleEndDate')
    }
}
Project.findAll({
  where: {
    id: {
      [Op.and]: {a: 5},           // AND (a = 5)
      [Op.or]: [{a: 5}, {a: 6}],  // (a = 5 OR a = 6)
      [Op.gt]: 6,                // id > 6
      [Op.gte]: 6,               // id >= 6
      [Op.lt]: 10,               // id < 10
      [Op.lte]: 10,              // id <= 10
      [Op.ne]: 20,               // id != 20
      [Op.between]: [6, 10],     // BETWEEN 6 AND 10
      [Op.notBetween]: [11, 15], // NOT BETWEEN 11 AND 15
      [Op.in]: [1, 2],           // IN [1, 2]
      [Op.notIn]: [1, 2],        // NOT IN [1, 2]
      [Op.like]: '%hat',         // LIKE '%hat'
      [Op.notLike]: '%hat',       // NOT LIKE '%hat'
      [Op.iLike]: '%hat',         // ILIKE '%hat' (case insensitive)  (PG only)
      [Op.notILike]: '%hat',      // NOT ILIKE '%hat'  (PG only)
      [Op.overlap]: [1, 2],       // && [1, 2] (PG array overlap operator)
      [Op.contains]: [1, 2],      // @> [1, 2] (PG array contains operator)
      [Op.contained]: [1, 2],     // <@ [1, 2] (PG array contained by operator)
      [Op.any]: [2,3]            // ANY ARRAY[2, 3]::INTEGER (PG only)
    },
    status: {
      [Op.not]: false           // status NOT FALSE
    }
  }
})