0

我在 sql 查询中没有得到任何结果,因为在执行查询之前,where 子句中的过滤器已被 sequelize/tedious 更改。

const query = `SELECT field FROM Table WITH(NOLOCK) WHERE CreationDate BETWEEN '${startDate}' AND '${endDate}'`

return sequelize.rawQuery(query)
.then((resultado) => {
    return resultado;
})
.catch((error) => {
    console.log('error')
});

这是 sequelize/tedious 生成的查询

SELECT [Field] 
 FROM [Table] AS [Table] WHERE 
([Table].[CreationDate] > N'2018-02-01 16:36:00.000 -02:00' AND [Table].[CreationDate] < N'2018-02-01 16:46:00.000 -02:00')

你能帮我解决这个问题吗?CreationDate 存储为 YYYY-MM-DD HH:MM:SS

4

1 回答 1

0

上周我也一直在努力解决这个问题。它应该在这里解决,并在这里这里 讨论。但我不认为它真的已经解决了。

我知道这不是正确的方法,但是您可以从此更改架构:

CreationDate: {
  type: DataTypes.DATE,
  allowNull: true
},

CreationDate: {
  type: DataTypes.INTEGER,
  allowNull: true
},

然后将您的 startDate 和 endDate 转换为整数,例如:

 Date.parse(startDate) / (1000 * 60 * 60 * 24)

我真的希望有人能提供帮助,因为繁琐的文档有点难以理解。这暂时解决了我的问题,直到我解决它。只有mssql有这个问题。

于 2018-02-06T01:44:41.287 回答