如何解决Node.js Oracle DB日期返回错误值
我的数据库中有一个日期列。像这样用SQLDeveloper查询时
SELECT some_date as "Some date",cast(some_date as timestamp) at time zone 'UTC' as "Some date UTC"
FROM mytable
FETCH NEXT 1 ROWS ONLY;
在Node中运行此代码时:
const oracledb = require('oracledb');
const dbConfig = {
user: process.env.DB_USER,password: process.env.DB_PASSWORD,connectString: process.env.DB_TNSNAME,};
oracledb.getConnection(dbConfig).then(async conn => {
const result = await conn.execute('SELECT some_date FROM mytable FETCH NEXT 1 ROWS ONLY');
console.log(result.rows[0][0]);
});
我得到以下输出:2017-11-09T21:00:00.000Z
而当将此日期转换为当地时间时,例如带有矩:
console.log(moment(date).format('YYYY/MM/DD HH:mm:ss'));
我得到2017/11/09 23:00:00
因此,基本上,看来我通过JS查询数据库的日期比通过SQL开发人员查询的日期晚了1个小时。
我怀疑这与NOV-09是固定时间(所以我的本地时间是GMT + 2)有关,并且它当前是DST(我的本地时间是GMT + 3),但是我实际上该如何解决? / p>
解决方法
您尝试过此(https://oracle.github.io/node-oracledb/doc/api.html#-16173-fetching-dates-and-timestamps)吗?
您可以在启动Node.js之前设置环境变量ORA_SDTZ,例如:
--ignore-package-exit-codes=3010
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。