mysql timestamp now()不能与nodejs一起使用

时间:2017-12-20 09:50:57

标签: javascript mysql node.js

我正在尝试使用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:现在没有定义

4 个答案:

答案 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();”

参考:JavaScript now() Method

答案 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 列将自动设置为当前时间戳。

注意:

  1. 这里,您不需要从客户端在插入语句中传递任何日期或时间戳。
  2. 您可以进一步了解here