如何将日期作为输入传递给节点中的SQL Server查询

我正在使用node-mssql,我的功能如下:

const getPoliciesDue = async (userId,toDate) => {
  const db = await sql.connect(config) // const sql = require('mssql'),config = {config for my DB}
  const request = db.request()
    .input('userId',sql.VarChar,userId) // userId is a string
    .input('toDate',sql.Date,toDate) // toDate is a javascript Date() object
  const result = await request.query(
  'SELECT policyNumber,holderId,... FROM Policies WHERE Policies.userId = @userId AND Policies.toDate <= @toDate'
  )
  return result.recordset
}

我想获取属于某个用户的某个日期之前到期的所有策略。

但是当我运行这个确切的查询时,我得到了错误

必须声明标量变量@userId

我从@userId子句中删除了WHERE并放了'@toDate'(变量周围的引号)。现在我得到一个错误

从字符串转换日期和/或时间时转换失败

The documentationinput()接受Date()对象。我尝试传递日期对象以及YYYY-MM-DD格式的字符串,但无济于事。以YYYY-MM-DD格式传递字符串适用于INSERT查询,但不适用于SELECT查询。我应该如何运行查询?

注意,我无法在一行中运行查询,例如

db.request().input().query()

因为还有另一个输入,以后将有条件地输入。

iCMS 回答:如何将日期作为输入传递给节点中的SQL Server查询

好的,我的监督很大,对那些试图找到答案的人表示诚挚的歉意。我发现我在错误的对象上运行query()方法。我在db对象上运行查询方法,而我应该在request对象上运行查询方法。在正确的对象上调用该方法后,代码可以完美工作。

本文链接:https://www.f2er.com/2187179.html

大家都在问