我正在尝试使用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:现在没有定义
答案 0 :(得分:1)
您可以使用常规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})
答案 1 :(得分:1)
你得到这个错误的原因是因为now()适用于MYSQL,在javascript中运行now()寻找你的脚本中不存在的函数。
在Javascript中加载日期的正确方法是“Date.now();”
答案 2 :(得分:0)
我认为,你必须将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})
答案 3 :(得分:0)
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 列将自动设置为当前时间戳。
注意: