我正在尝试使用mssql
模块从节点js查询SQL Server。数据库中的日期格式为dd/mm/yyyy hh:mm:ss
。该查询在SQL Server Management Studio中运行正常,但是在node.js中使用时会产生以下错误:
代码如下:
//This query aims to retrieve the records that have been inserted to the database in the last 5 min
var sq = "SELECT * FROM [ofm1].[dbo].[ass_site] WHERE CONVERT(datetime, date1) > DATEADD(MINUTE, -5, GETDATE());"
conn = new mssql.ConnectionPool(dbConfig);
conn.connect().then(function () {
var request = new mssql.Request(conn);
request.query(sq).then(function (recordSet) {
recordSet = recordSet.recordset;
recordSet = JSON.stringify(recordSet)
recordSet = JSON.parse(recordSet)
recordSet.forEach(function(row) {
console.log("row:nevr: " + row.nevr)
console.log("row:group id " + row.codeass)
var rq = new mssql.Request(conn);
rq.input('id', mssql.NChar, row.nevr)
rq.input('group', mssql.NChar, row.codeass)
rq.input('feedback', mssql.Text, "new ticket !")
rq.input('url', mssql.NChar, "")
rq.input('notified', mssql.TinyInt, 0)
rq.query("INSERT INTO [ofm1].[dbo].[ticket] values (@id, @group, @feedback, @url, @notified);").then(function() {
});
});
/* console.log(recordSet);
console.log("description: " + recordSet.name);*/
// conn.close();
}).catch(function (err) {
console.log(err);
conn.close();
});
}).catch(function (err) {
console.log(err);
});
任何帮助将不胜感激,非常感谢!
答案 0 :(得分:2)
通常,尝试转换格式不正确的日期时会发生此错误
例如,尝试使用dd / mm / yyyy格式转换格式为mm / dd / yyyy的日期
SELECT CONVERT(datetime, '06/18/2018 12:05:23',103)
结果:
将varchar数据类型转换为datetime数据类型 值超出范围。
但是如果格式正确,请按照以下说明操作
SELECT CONVERT(datetime, '18/06/2018 12:05:23',103)
结果:
2018-06-18 12:05:23.000
将您的日期格式代码指定为103
,以匹配您的日期格式dd/mm/yyyy
,如下所示:
//This query aims to retrieve the records that have been inserted to the database in the last 5 min
var sq = "SELECT * FROM [ofm1].[dbo].[ass_site] WHERE CONVERT(datetime, date1,103) > DATEADD(MINUTE, -5, GETDATE());"
有关格式代码的更多详细信息,请检查link