Javascript 在Node.js代码中将MySQL日期时间值可靠地解释为UTC
我有一个恼人的问题,同一个MySQLJavascript 在Node.js代码中将MySQL日期时间值可靠地解释为UTC,javascript,mysql,node.js,datetime,mysql2,Javascript,Mysql,Node.js,Datetime,Mysql2,我有一个恼人的问题,同一个MySQLdatetime值在我的开发人员环境和测试环境中的解释不同 在MySQL数据库中,它的存储方式如下(在两种环境中) 2021-04-07 04:30:21 这里没有时区信息(例如ISO-8601表示法)。因此,我认为应由客户机决定此存储日期/时间的时区 js代码使用库与数据库接口 在测试环境中,读取上述日期/时间可将其正确调整为本地时间: 2021年4月7日星期三14:30:21 GMT+1000(澳大利亚东部标准时间) 但是,在我的开发环境中,日期/时间值保
datetime
值在我的开发人员环境和测试环境中的解释不同
在MySQL数据库中,它的存储方式如下(在两种环境中)
2021-04-07 04:30:21
这里没有时区信息(例如ISO-8601表示法)。因此,我认为应由客户机决定此存储日期/时间的时区
js代码使用库与数据库接口
在测试环境中,读取上述日期/时间可将其正确调整为本地时间:
2021年4月7日星期三14:30:21 GMT+1000(澳大利亚东部标准时间)
但是,在我的开发环境中,日期/时间值保持不变,但被错误地解释为本地时区中的日期/时间:
2021年4月7日星期三04:30:21 GMT+1000(澳大利亚东部标准时间)
我不确定问题出在哪里。可能测试服务器的配置与我的开发环境不同。你知道问题出在哪里吗
进一步信息
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\u helpers.pool
是通过mysql2createPool
函数创建的池
如果我随后循环查看
付款
并执行控制台.log(付款.payment\u日期)代码>它打印出如上所述的错误日期。请显示数据库表的定义和使用的JavaScript代码。@NineBerry-我编辑了文章以添加此信息。请参阅