我正在使用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);
});
答案 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