LQ博客 www.lqblogs.com
arrows
nav

node mysql连接配置时解决时区显示问题

作者:lq 来源:原创 发布时间:2019-08-28 浏览量:2277 评论:0 点赞:1

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用来操作数据库表
        })
      } 
    }) 
   })
}
mysql node
如果你感觉本文章对你有帮助的话,那就点赞、打赏或订阅一下吧
点赞(1)
打赏
倒踩(0)
关闭 感谢您的支持,我会继续努力
微信支付
支付宝支付
扫码打赏,建议金额1-20元
浏览量(2277)
讨论本篇文章(0)
发表评论

最多访问文章

最新文章