我试图使用nodejs在mysql表中插入一行。我试图通过在nodejs中将其值作为now()发送来更新列creation_date(timestamp),但它给出了一个错误,指出“now”未定义。当我在mysql中直接执行相同的sql查询时,它正在工作。我不知道问题出在哪里。有人可以在这里帮助我...这是我在mysql中向表中插入值的nodejs代码。
var sql = `INSERT INTO sales
(
user_id, name, tagline, start_date,
start_time, end_date, reg_start,
reg_end, descr, creation_date
) VALUES (
?, ?, ?, ?,
?, ?, ?,
?, ?, ?
)`
pool.query(sql, [
id, req.body.sale_name, req.body.tag, req.body.start,
req.body.stime, req.body.end, req.body.reg_start,
req.body.start, req.body.descr, now()
], function (err, result) { //further code})
我得到的错误是:ReferenceError:现在没有定义
您可以使用常规JavaScript对象获取今天的日期。
var datetime = new Date();
所以,我想你应该写这样的smth:
pool.query(sql, [
id, req.body.sale_name, req.body.tag, req.body.start,
req.body.stime, req.body.end, req.body.reg_start,
req.body.start, req.body.descr, new Date()
], function (err, result) { //further code})
你得到这个错误的原因是因为now()适用于MYSQL,在javascript中运行now()寻找脚本中不存在的函数。
在Javascript中加载日期的正确方法是“Date.now();”
我想,你必须将now()作为一个字符串给出:
pool.query(sql, [
id, req.body.sale_name, req.body.tag, req.body.start,
req.body.stime, req.body.end, req.body.reg_start,
req.body.start, req.body.descr, 'now()'
], function (err, result) { //further code})
TIMESTAMP和DATETIME列可以自动初始化并更新为MySQL中的当前日期和时间(即当前时间戳)。
因此,在这里您可以设置当前时间戳而不从客户端传递它。每当在MySQL数据库中插入一行时,当前时间戳将自动设置为TIMESTAMP / DATETIME列。
CREATE TABLE语句:
CREATE TABLE t1 (
// rest of the statements
'creation_timestamp' TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
'creation_datetime' DATETIME DEFAULT CURRENT_TIMESTAMP,
);
现在,只要将一行插入数据库,那么creation_timestamp / creation_datetime列将自动设置为当前时间戳。
注意: