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

问题描述 投票:2回答:4

我试图使用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 mysql node.js
4个回答
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
投票

你得到这个错误的原因是因为now()适用于MYSQL,在javascript中运行now()寻找脚本中不存在的函数。

在Javascript中加载日期的正确方法是“Date.now();”

参考:JavaScript now() Method


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})

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. 在这里,您不需要从客户端传递insert语句中的任何日期或时间戳。
  2. 你可以了解更多关于它here
© www.soinside.com 2019 - 2024. All rights reserved.