Node.js 节点js将日期转换为有效的mssql日期

Node.js 节点js将日期转换为有效的mssql日期,node.js,sql-server,Node.js,Sql Server,我正在使用NodeJS和创建API 在这里,我想调用sql server上的一个存储过程,它以DATETIME作为参数 我的Js代码是这样的 const sql = require('mssql'); router.get('/getStuff', async (req, res) => { const pool = await new sql.ConnectionPool(DB_CONNECTION).connect(); const date = moment().

我正在使用NodeJS和创建API

在这里,我想调用sql server上的一个存储过程,它以
DATETIME
作为参数

我的Js代码是这样的

const sql = require('mssql');

router.get('/getStuff', async (req, res) => {
    const pool = await new sql.ConnectionPool(DB_CONNECTION).connect();

    const date = moment().format('DD.MM.YYYY');

    const result = await pool.request()
            .input('Date', sql.DateTime, date)
            .execute('MY_Stored_Procedure');

    res.status(200).send(result.recordset);
}
然后我得到以下错误

错误:{“code”:“EPARAM”,“number”:“EPARAM”,“originalError”:{“message”:“参数“Date”的验证失败。无效日期。”,“code”:“EPARAM”},“name”:“RequestError”,“predingErrors”:[]}

我还尝试了所有mssql数据类型

  • 日期
  • 日期时间
  • 日期时间2
要完成它,这里是存储过程的开始

创建过程我的存储过程(
@日期时间=null
)作为
设置日期格式dmy;
...

您是否尝试使用国际日期格式
yyyy-MM-dd
?是的,但这不重要,因为我将
dateformat
设置为
dmy
。您在过程中设置了格式
@date
值不受服务器
dateformat
的影响,它由
mssql
js包提供。您可以尝试将
varchar
值传递给过程,然后
cast
将其转换为日期,这样就可以应用日期格式。