如何在SQL中将占位符与CONVERT一起使用?

时间:2020-05-19 04:00:59

标签: javascript sql

这是我的代码:

const result = await connection.query("INSERT INTO myTable ([ID],[ClassId],[Active],
[LastUpdateDateTime],[LastUpdateUser],[Number],[ExternalId],
[MaterialDefinitionId],[CompanyId],[IsBlanket],[Type],[Subtype],
[CreatedDate],[ValidFromDate],[ValidToDate],[OrderedQuantity],
[DeliveredQuantity],[ReservedQuantity],[UnitOfMeasurement],[Status],[Note])

VALUES (?,?,?,CONVERT(DATETIME, ? , 102),?,?,?,?,?,?,?,
?,CONVERT(DATETIME, ? , 102),CONVERT(DATETIME, ?, 102),
CONVERT(DATETIME, ? , 102),?,?,?,?,?,?)" , 

['100000061', 'Order' , 1, 
'2020-01-01 11:11:11' , 'xxx' , 123 , '9901177998' , '100000003' ,
'100000012' , 0 , 'xxx', 'xxx', '2020-01-01 11:11:11' , 
'2020-01-01 11:11:11' , '2020-01-01 11:11:11' , 2000.0 , 
0.0 , 0.0, 'xxx' , 'Created' , 'xxx']);

我正在尝试插入时间,但出现此错误: RequestError:“?”附近的语法不正确。

有人知道解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在connection.query函数中使用一个数组作为参数来设置值。您可能只设置第一个。

检查:https://www.mysqltutorial.org/mysql-nodejs/insert/

它看起来应该像这样:

let stmt = `INSERT INTO todos(title,completed)
            VALUES(?,?)`;
let todo = ['Insert a new row with placeholders', false];

// execute the insert statment
connection.query(stmt, todo, (err, results, fields) => {
  if (err) {
    return console.error(err.message);
  }
  // get inserted id
  console.log('Todo Id:' + results.insertId);
});

在您的情况下,您应该尝试:

const result = await connection.query("INSERT INTO myTable ([ID],[LastUpdateDateTime]) VALUES (? , CONVERT(DATETIME, ? , 102))", [1, '2020-01-01']);