如何将node.jsdate转换为SQL Server兼容的date时间?
我有一个Web API使用快速和繁琐的一些数据存储在Azure SQL数据库。 使用nvarchar
types和int
types它工作得很好,但是当我尝试保存DateTime
值时,我收到一条错误消息:
Insert into Proxy (Ip, RequisitionDate) values ('1', '2016-05-18 3:32:21' )
错误:
RequestError:参数'RequisitionDate'的validation失败。 date无效。] message:'validation失败,参数'RequisitionDate \'。 date无效。',code:'EPARAM'}
那么有趣的是
Insert into Proxy (Ip, RequisitionDate) values ('1', '2016-05-18 3:32:21')
是我在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); }
如果我直接在SqlManager Studio上执行查询,它工作正常。
看来你没有在addParameter
函数中设置正确的datetime
值。 根据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); }
任何进一步的关注,请随时让我知道。