首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在node-oracledb NodeJS中使用TO_TIMESTAMP和TO_DATE

如何在node-oracledb NodeJS中使用TO_TIMESTAMP和TO_DATE
EN

Stack Overflow用户
提问于 2017-11-10 15:33:47
回答 1查看 4.5K关注 0票数 0

我需要使用Nodejs应用程序将数据插入到oracle DB中。我使用node-oracledb框架来执行此操作。我可以用这个来做CURD操作。当我尝试插入时间戳和日期字段(使用to_date)时,它抛出错误"ORA-00932: inconsistent datatypes: expected TIMESTAMP got NUMBER\n

下面是我将用来插入到Oracle数据库中的输入参数。

代码语言:javascript
复制
  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()一样。

EN

回答 1

Stack Overflow用户

发布于 2017-11-11 07:11:30

你为什么在约会时打电话给getTime?只留下日期就行了。

如果你展示更多的代码会有所帮助。

给定此表:

代码语言:javascript
复制
create table t (
  c date
)
/

下面是一个插入日期的示例:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47217776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档