###前提・実現したいこと
C#でバッチプログラムを作成しています。
SQLでUPDATE文を書いているのですが、DBに登録されている日付型がyyyy/MM/dd形式で、プログラム中で下記のソースコードを実行すると時間まで入ってしまいます。
そのまま処理を実行するとyyyy/MM/dd hh:mm:ssで登録しようとし、DBの日付書式と登録しようとしている書式が異なるためエラーが出ているようです。
yyyy/MM/dd形式のDATE型を作成し、DBに登録したいです。
エラーメッセージ
(log4net)ERROR=[呼び出しのターゲットが例外をスローしました。]
Exception: System.Reflection.TargetInvocationException
Message: 呼び出しのターゲットが例外をスローしました。
Source: mscorlib
場所 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
場所 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
場所 System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
場所 FlowCtlLib.FlowControler._executeJob(JOB ctlJob)
場所 FlowCtlLib.FlowControler.ExecuteFlow(JOBS ctlJobs)
場所 FlowCtlLib.FlowControler.ExecuteFlow(FLOW ctlFlow)
場所 FlowCtlLib.FlowControler.Execute(String flowControlFilePath, String FlowID)
Nested Exception
Exception: System.Data.OracleClient.OracleException
Message: ORA-01861: リテラルが書式文字列と一致しません
###該当のソースコード
言語はC#です。
下記ソースの前にパラメータを宣言しています。
C#
1hntknsb = hnt["YMD"].ToString();//日付の文字列を取得(yyyyMMdd) 2hntknsb = hntknsb.Insert(4, "/").Insert(7, "/");//スラッシュを挿入する(yyyy/MM/dd) 3hnt_knsb = DateTime.ParseExact(hntknsb, "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture);//日付型に変換 4
上記ソースの後にパラメータに値をセットし、SQLを実行しています。
###試したこと
SQLのTO_DATE文等の使い方がよくわかっておらず、時間も限られているので質問させて頂きました。
/を入れただけの文字列をSQLに渡してSQL側で日付型に変換すれば登録できるのでしょうか…?
宜しくお願いします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/03 06:33
2017/03/03 06:35
2017/03/03 06:50 編集
2017/03/03 07:15
2017/03/03 08:36