0

重複の可能性:
Oracle DBMS_SQL.EXECUTE 関数での TO_DATE の問題

日付をvarchar入力として受け取り、nがそれを別のプロシージャに渡す関数を使用しています。日付に関連付けられた過去の時間が一部のシナリオで挿入されていないことがわかりました。私の機能の下に見つけてください

iv_plsql4 :='10-AUG-2012 07:30:30';
ln_dbms_cur := DBMS_SQL.OPEN_CURSOR;
iv_plsql2 := BEGIN PKG_PRADEEP.P_INSERTDATE(to_date(iv_plsql4,'DD-MM-YYYY HH24:MI:SS'));

DBMS_OUTPUT.put_line(iv_plsql);
DBMS_SQL.PARSE(ln_dbms_cur,iv_plsql,DBMS_SQL.NATIVE);
ln_cur_execute := DBMS_SQL.EXECUTE(ln_dbms_cur);

このコードは日付をデータベースに挿入しますが、時刻は午前 12:00 になります。

しかし、文字列 iv_plsql2 を以下のように変更すると、日付が TIME フィールドに挿入されます。

iv_plsql2 := BEGIN PKG_PRADEEP.P_INSERTDATE(to_date('10-AUG-2012 07:30:30','DD-MM-YYYY HH24:MI:SS'));

誰かがなぜこれが起こるのか説明できますか?

4

1 に答える 1

0

PL/SQL: 日付形式は、DD-MM-YYYY ではなく、DD-MON-YYYY にする必要があります。

Java: CallableStatement で setInt を使用して日付文字列を設定しています。これは正しくありません。実際、それがどのようにコンパイルされるかはわかりません。

于 2012-08-10T22:09:28.693 に答える