0

我需要运行这个 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 格式) .

做一些测试,比如

从 DUAL 中选择 to_char(sysdate, 'HH24:mi:SS')

是成功的

这是消息错误:

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:
4

1 回答 1

1

hora_inicioto_char()是一个时间戳列,但由于调用,您在插入语句中将一个字符值传递给它。

在处理您提供的字符值时,Oracle 会尝试将其转换为时间戳(因为目标列时间戳)。但是像这样的时间23:56:12绝对不是一个有效的日期。

如果您尝试将时间部分插入该列,那将不起作用。时间戳总是包含一个日期。Oracle 中没有数据类型只能保存时间。

于 2012-09-27T20:23:16.870 回答