javascript - Node.js Oracle DB 日期返回错误值

标签 javascript node.js oracle date node-oracledb

我的数据库中有一个日期列。像这样使用 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)以及它当前是夏令时(我的本地时间是 GMT+3)有关,但我该如何解决这个问题?

最佳答案

您试过这个 ( https://oracle.github.io/node-oracledb/doc/api.html#-16173-fetching-dates-and-timestamps ) 吗?

You can set the environment variable ORA_SDTZ before starting Node.js, for example:

$ export ORA_SDTZ='UTC'
$ node myapp.js

关于javascript - Node.js Oracle DB 日期返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322898/

相关文章:

mysql - MySQL 的 Oracle 替代品 REPLACE INTO

javascript - Node.js + Cheerio 抓取 : Passing an array of urls to download?

javascript - 对 Expressjs/Nodejs 请求 - 响应处理感到困惑

sql - 表 SQL 中列值的超集

python - 如何在 SQLAlchemy 中漂亮地格式化 SQL 查询的打印

node.js - 如何在 mustache 模板中使用三元运算符

javascript - 输入动态填充时 AngularJS 表单验证失败

javascript - 谷歌新工作表格式上的 XmlHttpRequest 状态 0

javascript - 如何使用 java 脚本将动态值存储在本地存储中?

javascript - 查找无向图的所有连通分量