[英]Not able to successfully insert the data into the oracle db table
Please advise why i am getting error in below qracle insert qquery beow is the query请告知为什么我在下面的 qracle 中出现错误 insert qquery 下面是查询
insert into RT_INVOICE (VERSION, PART_ID_BROKER, EMAIL_ID, ATTACHMENT_ID, INITIAL_AMOUNT, CURRENT_AMOUNT, GROSS_AMOUNT,
RECEIVED_DATE, COMMITTED_DATE, CREATEDDATE, UPDATEDDATE, SETTLEMENT_DATE, CURR_ISO_CODE, WQTY_CODE_CURRENT,
BROKER_REFERENCE, CREATED_BY, ENTITY, PRODUCT, BROKER_INV_REF, ASSIGNEE, RECEIPT_DATE, TRADE_COUNT, GST_PCT,
IS_GST_APPLIED, SOURCE_SYSTEM, DISCOUNT, MANUAL_INDICATOR, MANUAL_REFERENCE, PAYMENT_REFERENCE, QUERY_ASSIGNMENT,
Remarks, PARENT_INVO_ID, INVOICE_MONTH, ID) values (0, 40158334066, 0, 0, 22.0, 22.0, 22.0, '10 October 2016',
null, '2016-10-10 03:51:15', '2016-10-10 03:51:15', null, 'HKD', 'BrokerageManualReconciliationWFQueue',
'IRDOCT169694', 'bro_admin', 'PLC LONDON', 'IRD', 'wwwqqsd', '', '10 October 2016', 0, 0.0, 'false', 'GDS', 0.0,
'true', null, null, null, null, null, '2016-10', 13093090)
The error that i am getting is我得到的错误是
Error report: SQL Error: ORA-01843: not a valid month 01843. 00000 - "not a valid month" *Cause: *Action:
Just for the reference the structure of the table is仅供参考,表的结构是
Name Null Type ID NOT NULL NUMBER(32) VERSION NOT NULL NUMBER(20) PART_ID_BROKER NOT NULL NUMBER(32) INITIAL_AMOUNT NOT NULL NUMBER(25,5) CURR_ISO_CODE VARCHAR2(20) CURRENT_AMOUNT NOT NULL NUMBER(25,5) SETT_ID NUMBER(32) RECEIVED_DATE NOT NULL DATE COMMITTED_DATE DATE SETTLEMENT_DATE DATE CREATEDDATE NOT NULL TIMESTAMP(6) UPDATEDDATE TIMESTAMP(6) WQTY_CODE_CURRENT NOT NULL VARCHAR2(100) BROKER_REFERENCE VARCHAR2(100) CREATED_BY NOT NULL VARCHAR2(30) SOURCE_SYSTEM NOT NULL VARCHAR2(20) INVOICE_MONTH VARCHAR2(30) ENTITY NOT NULL VARCHAR2(50) PRODUCT NOT NULL VARCHAR2(50) BROKER_INV_REF VARCHAR2(50) ASSIGNEE VARCHAR2(50) RECEIPT_DATE TIMESTAMP(6) TRADE_COUNT NUMBER GST_PCT NUMBER(25,5) IS_GST_APPLIED CHAR(1) PARENT_INVO_ID NUMBER(32) DISCOUNT NUMBER(25,5) MANUAL_INDICATOR CHAR(1) MANUAL_REFERENCE VARCHAR2(100) PAYMENT_REFERENCE VARCHAR2(100) QUERY_ASSIGNMENT VARCHAR2(100) REMARKS VARCHAR2(500) ATTACHMENT_ID NUMBER(32) EMAIL_ID NUMBER(32) GROSS_AMOUNT NOT NULL NUMBER(25,5)
To convert string to date try to use to_date function:要将字符串转换为日期,请尝试使用 to_date 函数:
insert into RT_INVOICE (VERSION, PART_ID_BROKER, EMAIL_ID, ATTACHMENT_ID, INITIAL_AMOUNT, CURRENT_AMOUNT, GROSS_AMOUNT,
RECEIVED_DATE, COMMITTED_DATE, CREATEDDATE, UPDATEDDATE, SETTLEMENT_DATE, CURR_ISO_CODE, WQTY_CODE_CURRENT,
BROKER_REFERENCE, CREATED_BY, ENTITY, PRODUCT, BROKER_INV_REF, ASSIGNEE, RECEIPT_DATE, TRADE_COUNT, GST_PCT,
IS_GST_APPLIED, SOURCE_SYSTEM, DISCOUNT, MANUAL_INDICATOR, MANUAL_REFERENCE, PAYMENT_REFERENCE, QUERY_ASSIGNMENT,
Remarks, PARENT_INVO_ID, INVOICE_MONTH, ID) values (0, 40158334066, 0, 0, 22.0, 22.0, 22.0, to_date('10 October 2016', 'dd month yyyy', 'nls_date_language = american') ,
null, to_date('2016-10-10 03:51:15', 'yyyy-mm-dd hh24:mi:ss'), to_date('2016-10-10 03:51:15', 'yyyy-mm-dd hh24:mi:ss'), null, 'HKD', 'BrokerageManualReconciliationWFQueue',
'IRDOCT169694', 'bro_admin', 'PLC LONDON', 'IRD', 'wwwqqsd', '', to_date('10 October 2016', 'dd month yyyy', 'nls_date_language = american'), 0, 0.0, 'false', 'GDS', 0.0,
'true', null, null, null, null, null, '2016-10', 13093090)
'10 October 2016'
, '2016-10-10 03:51:15'
, and '2016-10-10 03:51:15'
are strings. '10 October 2016'
、 '2016-10-10 03:51:15'
和'2016-10-10 03:51:15'
是字符串。 As your columns are datetimes, as they should be, Oracle needs to convert your strings and tries this as best as it can given your current settings.由于您的列是日期时间,它们应该是日期时间,因此 Oracle 需要转换您的字符串,并在给定您当前设置的情况下尽可能地尝试此操作。 It's more or less a matter of luck whether Oracle understands your formats or not. Oracle 是否理解您的格式或多或少取决于运气。
Use ANSI datetime literals instead:改用 ANSI 日期时间文字:
date '2016-10-10', null, timestamp '2016-10-10 03:51:15', timestamp '2016-10-10 03:51:15'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.