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形式) 。

のようないくつかのテストを行う

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

1 に答える 1

1

hora_inicioto_char()はタイムスタンプ列ですが、呼び出しのために挿入ステートメントで文字値を渡しています。

指定した文字値の処理中に、Oracle はそれをタイムスタンプに変換しようとします (ターゲット列タイムスタンプであるため)。しかし、次のような時間23:56:12は、間違いなく有効な日付ではありません。

その列に時間部分のみを挿入しようとしている場合、それは機能しません。タイムスタンプには常に日付が含まれます。Oracle には、時間を保持するだけのデータ型はありません。

于 2012-09-27T20:23:16.870 に答える