node+Mysql,数据库时区显示正确,查询时却显示另一个时区

7 篇文章 0 订阅
4 篇文章 0 订阅

问题:

1.node+Mysql,查看数据库时区显示正确,但查询时,显示的确是另一个时区的时间。
2.前端调用接口返回:startTime: "2020-03-04T17:53:55.000Z"这样的格式
在这里插入图片描述
3.但查看数据库,时间显示是正确的格式:
在这里插入图片描述
4. 这个问题其实困扰了我很久,找的方法都一样,但是都解决不了,就一直搁置着,之前都是在搜mysql的时区问题,直到今天多加了个node关键词,才解决掉。论搜索的关键词的重要性!

解决:

1.按照百度的方法先修改了mysql的时区的配置

#登录数据库查看时区配置:
show variables like '%time_zone%';
# 仅修改当前会话的时区,停止会话失效
set time_zone = '+8:00';
 
# 修改全局的时区配置
set global time_zone = '+8:00';
flush privileges;

2.再查看一下,确认已经修改成功了,但是没用,返回的数据还是和修改之前的一样!
在这里插入图片描述
3.这时候还需要修改一下node对数据库的配置(dateStrings : true):

var mysqlConfig = {
  host: "localhost",
  user: "root",
  password: "123456",
  port: "3306",
  database: "sqltest",
  dateStrings: true //修改日期格式 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回
};

module.exports = mysqlConfig

4.再查看一下,格式已经是正确返回了:
在这里插入图片描述
5. 再对比一下,确实,修改配置之前time的格式是红色的,并不是字符串类型;
在这里插入图片描述

附:

附node对mysql的其他配置及解释:

var mysqlConfig = {
host: 连接数据库所在的主机名. (默认: localhost)  
port: 连接端口. (默认: 3306)  
localAddress: 用于TCP连接的IP地址. (可选)  
socketPath: 链接到unix域的路径。在使用host和port时该参数会被忽略.  
user: MySQL用户的用户名.  
password: MySQL用户的密码.  
database: 链接到的数据库名称 (可选).  
charset: 连接的字符集. (默认: 'UTF8_GENERAL_CI'.设置该值要使用大写!)  
timezone: 储存本地时间的时区. (默认: 'local')  
stringifyObjects: 是否序列化对象. See issue #501. (默认: 'false')  
insecureAuth: 是否允许旧的身份验证方法连接到数据库实例. (默认: false)  
typeCast: 确定是否讲column值转换为本地JavaScript类型列值. (默认: true)  
queryFormat: 自定义的查询语句格式化函数.  
supportBigNumbers: 数据库处理大数字(长整型和含小数),时应该启用 (默认: false).  
bigNumberStrings: 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false).   
dateStrings: 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)  
debug: 是否开启调试. (默认: false)  
multipleStatements: 是否允许在一个query中传递多个查询语句. (Default: false)  
flags: 链接标志. 
} 

参考连接:
MySQL查看和修改时区的方法
nodejs中mysql用法
Nodejs——Mysql时区问题

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值