【发布时间】:2012-09-27 20:17:56
【问题描述】:
我需要运行这条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:
【问题讨论】:
-
timestamp(6)包含日期和时间,秒精度为 6 位。使用sysdate填充hora_termino没有意义,因为sysdate没有小数秒——使用systimestamp或current_timestamp会更合乎逻辑。将字符串分配给hora_inicio是没有意义的,尝试仅分配一个时间组件就更没有意义了。由于必须有日期组件,因此将使用今天的日期,因此,如果可行,您只需返回分配sysdate。