oracle查询失败,SQL错误代码为185

时间:2018-02-03 12:13:13

标签: sql oracle

我正在尝试将行插入表中。我使用的是oracle数据库。查询如下所示:

INSERT INTO bv_chglogentry
SELECT DISTINCT account_coid,
                To_timestamp('2018-02-01-16.04.22.428161',
                'YYYY-MM-DD-HH24.MI.SSXFF'),
                1,
                'HP15004',
                '~HP15004',
                ' ',
                ' ',
                Hextoraw('00257EAB')
                || Hextoraw('0001517F0804011B'),
                Hextoraw('0000000F07650368'),
                ' ',
                0,
                ' ',
                Trunc(To_number(To_char(To_date('2015-05-02', 'YYYY-MM-DD'), 'J'
                                ))),
                134480155,
                86399,
                124060520
FROM   inputaccounts;  

表的结构如下所示;

BV_CHGLOGENTRY
---------------
COID_              NOT NULL CHAR(26 CHAR) 
TIMESTAMP_         NOT NULL TIMESTAMP(9)  
PRODUCT_ID         NOT NULL NUMBER(10)    
ADMIN_UNIT_ID      NOT NULL CHAR(8 CHAR)  
OPERATOR_ID        NOT NULL CHAR(10 CHAR) 
OVER_ADMIN_UNIT_ID NOT NULL CHAR(8 CHAR)  
OVER_OPERATOR_ID   NOT NULL CHAR(10 CHAR) 
CHANGE_DATE        NOT NULL RAW(12 BYTE)  
DESCRIPTION_       NOT NULL RAW(220 BYTE) 
BUSINESS_EVENT_ID  NOT NULL CHAR(32 CHAR) 
OWNER_TYPE         NOT NULL NUMBER(10)    
OWNER_ID           NOT NULL CHAR(26 CHAR) 
DATE_              NOT NULL NUMBER(10)    
ZONE_              NOT NULL NUMBER(10)    
TIME_              NOT NULL NUMBER(10)    
CHG_LOG_TYPE       NOT NULL NUMBER(10)    

INPUTACCOUNTS
--------------
ACCOUNT_COID NOT NULL CHAR(26) 
TXN_ID       NOT NULL CHAR(26) 

有一个DATE_列,其类型为NUMBER。我在该列中插入适当的数据时遇到问题。我插入的列数是16,这在BV_CHGLOGENTRY中是正确的。你能否告诉我上述查询可能出现的问题。

1 个答案:

答案 0 :(得分:0)

插入后,您在日期列中获得的值不正确。它刚刚转换为 Julian日历格式。因为您要在select查询中将日期转换为儒略历,即:

Trunc(To_number(To_char(To_date('2015-05-02','YYYY-MM-DD'),' J ')))

您获取日期列的值是正确的(2457145)。

要避免这种情况,您可以在SELECT查询中使用替换()功能,以便在Trunc(To_number(To_char(To_date('2015-05-02', 'YYYY-MM-DD'), 'J')))处获取可读日期数字格式。

示例查询

select to_number(replace('2015-08-02', '-')) from dual;

输出:20150802