Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Javascript 如何使用sequelize与postgres进行日期比较_Javascript_Postgresql_Date_Sequelize.js - Fatal编程技术网

Javascript 如何使用sequelize与postgres进行日期比较

Javascript 如何使用sequelize与postgres进行日期比较,javascript,postgresql,date,sequelize.js,Javascript,Postgresql,Date,Sequelize.js,我想删除所有日期在20分钟前的记录。Postgres(或Sequelize)不满意我提供的裸javascriptDate对象作为比较值 我在Postgres9.6数据库上使用Sequelize4.37 所讨论的列是用类型声明的:Sequelize.DATE,研究表明它相当于带时区的时间戳:一个精确到微秒的完整日期和时间以及一个时区符号。(这也是我在使用psql CLI工具描述表时看到的。) 因此,我这样做: const Sequelize = require('sequelize') const

我想删除所有日期在20分钟前的记录。Postgres(或Sequelize)不满意我提供的裸javascript
Date
对象作为比较值

我在Postgres9.6数据库上使用Sequelize4.37

所讨论的列是用
类型声明的:Sequelize.DATE
,研究表明它相当于带时区的
时间戳:一个精确到微秒的完整日期和时间以及一个时区符号。(这也是我在使用psql CLI工具描述表时看到的。)

因此,我这样做:

const Sequelize = require('sequelize')
const { SomeModel } = require('../models.js')

// calculate 20 minutes ago
async function deleteStuff() {
  const deletionCutoff = new Date()
  deletionCutoff.setMinutes( deletionCutoff.getMinutes() - 20 ) 

  await SomeModel.destroy({
    where: {
      [ Sequelize.Op.lt ]: { dateColumn: deletionCutoff }
    }
  })
但我得到了这个错误:

Error: Invalid value { dateColumn: 2018-11-21T21:26:16.849Z }
文档建议我应该能够提供一个简单的javascript日期或ISO8601字符串,但两者都抛出相同的
无效值
错误。唯一的区别是,如果我传递一个字符串,错误会在值周围显示单引号:

// error when dateColumn: deletionCutoff.toISOString()
Error: Invalid value { dateColumn: '2018-11-21T21:26:16.849Z' }

这太尴尬了。我错误地构造了
where
子句

// BAD CODE
await SomeModel.destroy({
  where: {
    [ Sequelize.Op.lt ]: {
      dateColumn: deletionCutoff
    }
  }
})


// GOOD CODE
await SomeModel.destroy({
  where: {
    dateColumn: {
      [ Sequelize.Op.lt ]: deletionCutoff
    }
  }
})

也许我应该删除这个问题。也许不会——我的错误可能会更有帮助。

你也可以接受你的答案。我认为这很有用不得不等2天。仍然可以删除它。。。我们来看看它会聚集多少仇恨。