我正在使用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 documentation说input()
接受Date()
对象。我尝试传递日期对象以及YYYY-MM-DD格式的字符串,但无济于事。以YYYY-MM-DD格式传递字符串适用于INSERT
查询,但不适用于SELECT
查询。我应该如何运行查询?
注意,我无法在一行中运行查询,例如
db.request().input().query()
因为还有另一个输入,以后将有条件地输入。