INSERT INTO MANPOWER.VIPBADGE (
DOC_SRL, GRP_CD, DOC_TYPE, REC_TYPE, MV_MT, VESS_NAME, VESS_TYPE, IMO_NO, CALL_SIGN, REG_PORT,
AGENCY_FUN_CD, AGENCY_CD, EX_VESS_NAME, EX_CALL_SIGN, VESS_FLAG, SAT_ID, SATCOM_ID, FREE_BOARD, VESS_BLD_DT, VESS_BLD_PLACE,
DT_OF_DELI, PERMANENT_VALIDTY, SHIP_REG_CERT_NO, SHIP_REG_VALDT, SAFETY_MGMT_CERT_NO, SAFETY_MGMT_CERT_VALDT, VESS_HT, ISPS_COMPL, CAP2_CERT, BEAM,
LOA, LBP, MAX_DRAFT, PARL_BODY_LN, BOW_TO_MANIFOLD, GRT, NRT, DWT, SUMMER_DEAD_WT, TEU_CAP,
SBT, REDU_GRT, VESS_OWN, EMAIL_ID, CLASSFN_SOCIETY, HULL_INS_COMP_NAME, HULL_INS_COMP_VALDT, ENGN_TYPE, NO_OF_ENGN, ENGN_POWER,
PROPULSION_TYPE, NO_OF_PROPELLERS, NO_OF_BAYS, NO_OF_ROWS_ON_DECK, HATCH_COVER_TYPE, NO_OF_HATCH, MAX_MAN_SPEED, BOW_THRUSTER, BOW_THRUSTER_NO, BOW_THRUSTER_POWER,
STERN_THRUSTER_NO, STERN_THRUSTER_POWER, BULBOUS_BOW, MMSI_NO, PORT_APPR, APPR_BY, APPR_DT, ACTION_FLAG, ENTRY_BY, ENTRY_DT ) VALUES (
'8735910', 'VRD', 'VESPRO', 'N', 'MT', 'KDS TANKER 1', '153', '170224', '5778568', 'INMAA1', 'VA', '70009330', ' ', ' ', 'IN', ' ',
' ', '1', TO_DATE('01/01/2023','dd/MM/yyyy'), ' ', ' ', 'N', '6527849 ', TO_DATE('31/12/2025', 'dd/MM/yyyy'), '7539234578',
TO_DATE('28/12/2025', 'dd/MM/yyyy'), ' ', 'Y', 'N', '30.00', '120.00', '100.00', '10.00', ' 90.000', ' ', '1000.0', '
500.0', '1500.0', ' ', ' ', 'N', ' ', 'RAM ', ' ', ' ', ' ', '', 'DIESEL', '2', ' ', 'DIESEL', '2', ' ', ' ', ' ', '1', '14.0', 'Y', '2',
' ', '2', ' ', 'N', ' ', 'INKKK1', ' admin001',TO_DATE('17/02/2025', 'dd/MM/yyyy'), 'Y', ' ADMIN',SYSDATE )
我已经以正确的格式提供了所有日期,但仍然出现错误:
ORA-01847: day of month must be between 1 and last day of month
请解释为什么?
谁知道呢;您还应该发布表格 description,其中指定哪些列是
DATE
。
查看该查询,看起来“dt”代表“日期”。如果是这样,则有 7 列:
INSERT INTO manpower.vipbadge (vess_bld_dt, -- 1
dt_of_deli, -- 2
ship_reg_valdt, -- 3
safety_mgmt_cert_valdt, -- 4
hull_ins_comp_valdt, -- 5
appr_dt, -- 6
entry_dt) -- 7
VALUES (TO_DATE ('01/01/2023', 'dd/MM/yyyy'), -- 1
' ', -- 2
TO_DATE ('31/12/2025', 'dd/MM/yyyy'), -- 3
TO_DATE ('28/12/2025', 'dd/MM/yyyy'), -- 4
' ', -- 5
TO_DATE ('17/02/2025', 'dd/MM/yyyy'), -- 6
SYSDATE -- 7
);
TO_DATE
以及与值匹配的格式掩码sysdate
是一个返回 date
数据类型dt_of_deli
和hull_ins_comp_valdt
)看起来可疑,因为您在其中放入了空格。这可能是导致错误的原因。演示:
SQL> create table test (id number, some_date date);
Table created.
将空间放入
some_date
:
SQL> insert into test (id, some_date) values (1, ' ');
insert into test (id, some_date) values (1, ' ')
*
ERROR at line 1:
ORA-01847: day of month must be between 1 and last day of month
SQL>
因此,请回顾这两列。如果您希望它们为空,请在其中插入
NULL
,而不是空格:
SQL> insert into test (id, some_date) values (1, null);
1 row created.
SQL>