javascript Nodejs mysql获取正确的TimeStamp格式

aiqt4smr  于 2023-05-16  发布在  Java
关注(0)|答案(4)|浏览(167)

我使用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);
});
jutyujz0

jutyujz01#

我建议处理行,而不是试图改变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);
});

update或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);
});
zmeyuzjn

zmeyuzjn2#

这听起来令人难以置信,但对时间戳字符串调用'.toString()'就足够了。这将给予人类可读的输出

kqlmhetl

kqlmhetl3#

只需将此添加到您的数据库连接配置:

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

az31mfrm4#

您可以使用选项dateString: true初始化连接,以强制将日期类型作为字符串返回。或者你也可以使用自定义类型转换来传递函数并自己处理类型转换:

var pool = mysql.createPool({
  // database properties...
  typeCast: function (field, next) {
    if (field.type === 'TIMESTAMP') {
        return field.string(); // or any format you want
    } else {
        return next();
    }
  }
});

参考文献:
https://github.com/mysqljs/mysql#connection-options
https://github.com/mysqljs/mysql#type-casting

相关问题