egg mysql 查询 Date 类型数据时区不对,时间减了 8 个小时
背景
日志表里存储了写入时间,时间存的是 Date 类型的数据,直接 select 出来的数据比存储的实际数据要少 8 个小时,时区不对。
数据库格式:2018-03-12 14:46:31, 通过egg-mysql查询出来的格式:2018-03-12T06:46:31.000Z, 自动加上了时区而且还是错误的时区。
解决办法
修改 egg mysql配置,增加 dateStrings: true 配置,示例如下:
// config/config.${env}.js
exports.mysql = {
// 单数据库信息配置
client: {
// host
host: 'mysql.com',
// 端口号
port: '3306',
// 用户名
user: 'test_user',
// 密码
password: 'test_password',
// 数据库名
database: 'test',
//时间按字符串读取
dateStrings: true,
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
dateStrins 的作用是强制日期格式(TIMESTAMP, DATETIME, DATE)使用JavaScript日期对象,默认配置的值为 false。