问题描述
我有一个恼人的问题,即在我的开发人员环境和测试环境中,相同的 MysqL datetime
值的解释不同。
2021-04-07 04:30:21
此处没有时区信息(例如 ISO-8601 表示)。所以我认为由客户决定这个存储日期/时间的时区。
在测试环境中,读取上面的日期/时间对我来说正确调整为当地时间:
Wed Apr 07 2021 14:30:21 GMT+1000 (Australian Eastern Standard Time)
然而,在我的开发环境中,日期/时间值没有改变,但它被错误地解释为本地时区中的日期/时间:
Wed Apr 07 2021 04:30:21 GMT+1000 (Australian Eastern Standard Time)
我不确定问题出在哪里。据推测,测试服务器的配置与我的开发环境不同。有什么想法可能出问题吗?
更多信息
MysqL 表定义
CREATE TABLE `payments` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,`amount` decimal(8,2) NOT NULL DEFAULT 0.00,`payment_date` datetime NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
用于读取值的 JavaScript 代码的精简版:
api_helpers.pool.execute("SELECT * FROM `payments`",[],function (err,payments) {
callback(err,payments);
}
);
其中 api_helpers.pool
是通过 MysqL2 createPool
函数创建的池。
如果我然后循环遍历 payments
并执行 console.log(payment.payment_date);
,它会打印出如上所述的错误日期。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)