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