Nodejs mysql获取正确的TimeStamp格式

时间:2016-07-17 14:51:05

标签: javascript node.js

我正在使用mysqljs,在获得sql的结果后,我得到了与此类似的TimeStamp格式:

created_at: Sat Jul 16 2016 23:52:54 GMT+0430 (IRDT)

但它在mysql上是:

2016-07-16 23:52:54

我希望得到它,而不是其他格式,如何在mysql连接或sql命令上设置此格式?

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'a',
    database: 'signal'
});

connection.query(command, function (err, rows) {
    if (err) throw err;
    console.log(rows);
});

3 个答案:

答案 0 :(得分:4)

我建议处理行而不是尝试更改MySQL输出结果。这样,您的数据库将包含有关created_date的详细完整数据。而客户端(其他功能,系统,项目等)将从DB检索的值格式化为他们需要的任何格式。此外,您将通过系统保持一致的退货结果。无论执行什么数据库查询,您的软件都会期望返回相同的格式。

以下是ES6中使用moment.js库来简化您将拥有的任何日期操作的示例,强烈建议您使用此库。

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'a',
    database: 'signal'
});

function formatDate(date) {
  return moment(date).format('YYYY-MM-DD HH:mm:ss');
}

connection.query(command, (err, rows) => {
    if (err) {
      throw err;
    }

    rows = rows.map(row => ({
      ...row,
      created_date: formatDate(row.created_date)
    }));

    console.log(rows);
});

更新或在ES5中

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'a',
    database: 'signal'
});

function formatDate(date) {
  return moment(date).format('YYYY-MM-DD HH:mm:ss');
}

connection.query(command, function(err, rows) {
    if (err) {
      throw err;
    }

    rows = rows.map(function(row) {
      return Object.assign({}, row, { created_date: formatDate(row.created_date) });
    });

    console.log(rows);
});

答案 1 :(得分:1)

这听起来令人难以置信,但足以在时间戳字符串上调用'.toString()'。这将提供人类可读的输出

答案 2 :(得分:0)

只需将其添加到您的数据库连接配置中即可:

timezone: "America/Los_Angeles" // <-- change for whatever your TZ is