我需要使用我的Nodejs应用程序将数据插入到我的oracle DB中。我正在使用node-oracledb框架来执行此操作。我可以用这个做CURD操作。当我尝试插入时间戳和日期字段(使用to_date)时,它会抛出错误“// Use os package to run the maven build using location where maven(headless) resides
func updateDistribution() error {
command := exec.Command("apache-maven-3.5.2/bin/mvn", "clean", "install")
command.Dir = "."
output, err := command.Output()
if err != nil {
return err
}
fmt.Printf("%s", output)
return nil
}
”
下面是我将用于在Oracle数据库中插入的输入参数。
ORA-00932: inconsistent datatypes: expected TIMESTAMP got NUMBER\n
有没有办法将JavaScript日期转换为Oracle日期和JavaScript日期时间到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', ' ')
和TO_DATE()
。
答案 0 :(得分:1)
为什么你在约会时给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();
最重要的是你得到正确的时区。如果您使用的是DATE或TIMESTAMP列,那么您应该格外小心。
请务必查看此文档: 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