【发布时间】:2021-01-27 01:33:08
【问题描述】:
我的数据库中有一个日期列。像这样用 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)的事实有关,但是我该如何解决这个问题呢?
【问题讨论】:
-
@Christopher Jones 不是重复的,因为那不是 Stackoverflow 事件。这也是我发布此问题后提出的问题
-
我只是把这些点连接起来,这样人们就可以在任何地方关注讨论。
标签: javascript node.js oracle date node-oracledb