我需要运行这个sql语句:
INSERT INTO JSP_CONTROL (estado,hora_inicio,fecha,tipo) VALUES
('ACTUALIZANDO',to_char(sysdate, 'HH24:mi:SS'),sysdate,'uno');
这是表格:
CREATE TABLE "GCUENTAS"."JSP_CONTROL"
(
"ESTADO" VARCHAR2(20 BYTE),
"HORA_INICIO" TIMESTAMP (6),
"HORA_TERMINO" TIMESTAMP (6),
"FECHA" DATE,
"TIPO" VARCHAR2(20 BYTE)
问题在于:to_char(sysdate,'HH24:mi:SS'),它应该插入类似“16:01:35”的内容,但插入“16/01/35”(在DD / MM /中) YY格式)。
进行一些测试,如
SELECT to_char(sysdate,'HH24:mi:SS')FROM DUAL
是成功的
这是消息错误:
Error que empieza en la línea 1 del comando:
INSERT INTO JSP_CONTROL (estado,hora_inicio,fecha,tipo) VALUES
('ACTUALIZANDO',to_char(sysdate, 'HH24:mi:SS'),sysdate,'uno')
Informe de error:
Error SQL: ORA-01843: mes no válido
01843. 00000 - "not a valid month"
*Cause:
*Action:
Error que empieza en la línea 1 del comando:
INSERT INTO JSP_CONTROL (estado,hora_inicio,fecha,tipo) VALUES
('ACTUALIZANDO',to_char(sysdate, 'HH24:mi:SS'),sysdate,'uno')
Informe de error:
Error SQL: ORA-01843: mes no válido
01843. 00000 - "not a valid month"
*Cause:
*Action:
答案 0 :(得分:1)
hora_inicio
是一个时间戳列,但由于to_char()
调用,您在insert语句中将字符值传递给它。
在处理您提供的字符值时,Oracle会尝试将其转换为时间戳(因为目标列是时间戳)。但像23:56:12
这样的时间绝对不是一个有效的日期。
如果您尝试将仅时间部分插入该列,那将无效。时间戳始终包含日期。 Oracle中没有数据类型只能保留时间。