gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:57:45 27 4
gpt4 key购买 nike

我的数据库中有一个日期列。像这样使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com