node mysql连接配置时解决时区显示问题,数据库时间显示是正常的“2019-08-08 11:17:52”,而使用node sql查询拉取后时间变成了“2019-08-08T03:17:52.000Z”。
首先,作者想到的是通过SQL语句的DATE_FORMAT进行时间格式转换,但是发现每次拉取都要进行格式转换,麻烦就不说了,重点还造成了代码冗余,故放弃了这一做法。
第二,作者又想到的是在建立数据库连接池的时候设置时区,因此,新增timezone参数,设置后重启发现并没有任何作用。
最后,作者发现在建立数据库连接池的时候,有提供了一个dateStrings的参数,通过对它的设置,可以实现强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)。最终,通过新增该参数设置后完美解决该问题。
具体参考demo示例:
npm install mysql --save-dev
var mysql = require('mysql'); //建立数据库连接池 var pool = mysql.createPool({ host: 'localhost', //连接数据库所在的主机名 user: 'root', //连接端口 password: '', //连接密码 database: 'test',//数据库名 //timezone: '+08:00',//时区设置 dateStrings: true,//强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false) }); exports.query = function(sql, values) { return new Promise((resolve, reject)=>{ pool.getConnection(function (err,connection) { if(err){ reject(err); }else{ connection.query(sql,values,(err,rows)=>{ if(err){ reject(err); }else{ console.log(rows); resolve(rows); } connection.release(); //为每一个请求都建立一个connection使用完后调用connection.release(); 直接释放资源。 //query用来操作数据库表 }) } }) }) }