我需要使用Nodejs应用程序将数据插入到oracle DB中。我使用node-oracledb框架来执行此操作。我可以用这个来做CURD操作。当我尝试插入时间戳和日期字段(使用to_date)时,它抛出错误"ORA-00932: inconsistent datatypes: expected TIMESTAMP got NUMBER\n“
下面是我将用来插入到Oracle数据库中的输入参数。
req.body.CREATE_TS = new Date('02-09-2014 00:30:00').getTime();
req.body.EFF_DTE = new Date('07-12-2014 00:30:00').getTime();
req.body.SENT_TS = new Date('07-20-2014 00:30:00').getTime();
req.body.LAST_UPDT_TS = new Date('10-20-2014 00:30:00').getTime();
req.body.EFF_DTE = new Date().toISOString().slice(0, 19).replace('T', ' ')有没有办法将Oracle转换为Oracle,并将JavaScript datetime转换为JavaScript datetime。就像TO_DATE()和TO_TIMESTAMP()一样。
发布于 2017-11-11 07:11:30
你为什么在约会时打电话给getTime?只留下日期就行了。
如果你展示更多的代码会有所帮助。
给定此表:
create table t (
c date
)
/下面是一个插入日期的示例:
const oracledb = require('oracledb');
const config = require('./dbConfig.js');
// date === 2017-01-01T00:00:00.000Z (UTC)
let date = new Date(Date.UTC(2017, 00, 01, 00, 00, 00));
async function insertDate() {
const conn = await oracledb.getConnection(config);
await conn.execute(
'insert into t (c) values (:d)',
{
d: date
},
{
autoCommit: true
}
);
}
insertDate();最重要的部分是你得到了正确的时区。如果您使用日期或时间戳列,则应格外小心。
请务必查看此文档:https://github.com/oracle/node-oracledb/blob/master/doc/api.md#-9163-fetching-date-and-timestamps
最简单的解决方案是在运行Node.js之前设置ORA_SDTZ环境变量。
另外,请查看这些幻灯片(9-17与日期相关):https://www.dropbox.com/s/69jt5uu1fqus84c/Tips%20and%20Tricks%20for%20Getting%20Started%20with%20the%20Oracle%20Database%20Driver%20for%20Node.pdf?dl=0
https://stackoverflow.com/questions/47217776
复制相似问题