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;

我回来了

09-NOV-17 10.00.00.000000000 PM UTC

在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