我正在尝试将行插入表中。我使用的是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中是正确的。你能否告诉我上述查询可能出现的问题。
答案 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