如何将node.js日期转换为与SQL Server兼容的日期时间?

gog*_*gog 4 sql-server azure node.js tedious

我有一个使用ExpressTedious的Web Api 在Azure SQL数据库上存储一些数据。使用nvarchar类型和int类型可以很好地工作,但是当我尝试保存DateTime值时,我收到一条错误消息:

Insert into Proxy (Ip, RequisitionDate) 
values ('1', '2016-05-18 3:32:21' )
Run Code Online (Sandbox Code Playgroud)

错误:

RequestError:参数'RequisitionDate'的验证失败。日期无效。]消息:“参数\'RequisitionDate \'的验证失败。日期无效。”,代码:“ EPARAM”}

好吧,有趣的是

Insert into Proxy (Ip, RequisitionDate) 
values ('1', '2016-05-18 3:32:21')
Run Code Online (Sandbox Code Playgroud)

是我在node.js api中执行的查询:

var query = "Insert into Proxy (Ip,RequisitionDate) values ( '"+ ip + "', '"+ date + "' )";
console.log(query); // Insert into Proxy (Ip,RequisitionDate) values ( '1', '2016-05-18 3:32:21' )

request = new Request(query, function(err) {
    if (err) {
        console.log(err);}
    });

    request.addParameter('Ip', TYPES.NVarChar,'SQL Server Express 2014');
    request.addParameter('RequisitionDate', TYPES.DateTime , 'SQLEXPRESS2014');

    connection.execSql(request);
}
Run Code Online (Sandbox Code Playgroud)

如果我直接在SqlManager Studio上执行查询,则可以正常运行。

Gar*_*SFT 6

似乎您尚未datetimeaddParameter函数中设置正确的值。根据API参考,该函数用作request.addParameter(name, type, value, [options])

请尝试以下代码:

var query = "Insert into Proxy (Ip,RequisitionDate) values ( @ip , @date)";

request = new Request(query, function(err) {
    if (err) {
        console.log(err);}
    });

    request.addParameter('ip', TYPES.NVarChar,'<ip value>');
    request.addParameter('date', TYPES.DateTime , new Date());
// or the set the special date, refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
//  request.addParameter('RequisitionDate', TYPES.DateTime , new Date(2016,05,19,3,32,21))
    connection.execSql(request);
}
Run Code Online (Sandbox Code Playgroud)

如有任何其他疑问,请随时告诉我。