2017-10-17 7 views
-3

私はこのオラクルのDateTime

SELECT CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE) INTO utc_date FROM DUAL; 

のように私は私のSPのアウトパラメーターでそれを返しています、私のストアドプロシージャからUTC日付時刻を返す午前私がしたいことから、outパラメータタイプは、タイムスタンプです時間も。 は、これは私がSP

DbParameter param25 = GetDbParameter("my_utc_date" , DbType.DateTime2 , DBNull.Value); 
          param25.Direction = ParameterDirection.Output; 
          param25.Size = 100; 
          cmd.Parameters.Add(param25);  

から返されるパラメータを取得しています方法です今私は、日付時刻にparam25の値を変換したい、私はこれを試してみましたが、その私に与え形式例外「文字列は有効なものとして認識されませんでした日付時刻。"

DateTime.ParseExact(Convert.ToString(param25.Value), "d/M/yyyy" , System.Globalization.CultureInfo.GetCultureInfo("en-US")); 

DbType.DateTimeも使用してみましたが、同じエラーです。

私は、同様の時間で、C#の日時にオラクルのdatetimeに変換することができますどのよう

17-OCT-17 07.07.35.000000 AM 

、param.Valueでこの値を取得しています。

+0

あなたが示したフォーマットはdM-yyy hh.mm.ss.ffffffです。あなたの日付に「/」がないので、フォーマット文字列として試してみてください。 – BugFinder

+0

dM-yyyを使ってみましたが、それでも同じです – Salman

+0

を発行します。ParseExact(https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx)を使用すると、形式を指定する必要があります。 'd/M/yyyy'を指定しますが、 'dd-MMM-yy hh.mm.ss.FFFFF tt'のようなものでなければなりません – EpicKip

答えて

0

はこのようにそれを試してみてください。

var param25 = new OracleParameter("my_utc_date", OracleDbType.Date); 
param25.Direction = ParameterDirection.Output; 
param25.DbType = DbType.DateTime; 
cmd.Parameters.Add(param25); 

cmd.ExecuteNonQuery(); 

var result = param25.Value; 
// or -> DateTime result = (DateTime)param25.Value; 

.Sizeは、DateTimeのタイプは必要ありません。 OracleParameterの場合、プロパティーはOracleDbTypeDbTypeです。デフォルトはVARCHAR2です。 String、これがDATE値の代わりに文字列を返す理由です。